variance

题目描述

给定序列 $a_1,a_2,\cdots,a_n$,定义 $f(l,r)=(a_l\oplus a_{l+1}\oplus \cdots \oplus a_r)+(a_l\vee a_{l+1}\vee \cdots \vee a_r)$,其中 $\oplus$ 表示 **按位异或** 运算,$\vee$ 表示 **按位或** 运算。 你需要求出所有满足 $1\le l \le r \le n$ 的 $f(l,r)$ 的方差 $v$。为避免精度误差,以及答案可能很大,请输出 $(v\times \frac{n^2\times (n+1)^2}{4}) \kern{3pt}\mathrm {mod}\kern{3pt} 998244353$。 **注意:运算过程中不取模,仅将结果取模。**

输入输出格式

输入格式


第一行一个正整数 $n$。 第二行 $n$ 个正整数 $a_1,a_2,\cdots,a_n$。

输出格式


输出一个整数 $(v\times \frac{n^2\times (n+1)^2}{4}) \kern{3pt}\mathrm {mod}\kern{3pt} 998244353$。

输入输出样例

输入样例 #1

3
2 1 3

输出样例 #1

80

输入样例 #2

4
4 1 3 2

输出样例 #2

1244

输入样例 #3

5
1 2 3 2 1

输出样例 #3

444

说明

方差的定义:对于 $n$ 个数 $a_1,a_2,\cdots,a_n$,它们的方差是: $$ \frac 1 n\sum_{i=1}^n (a_i-\bar{a})^2 $$ 其中 $\bar{a}$ 为 $a_1,a_2,\cdots,a_n$ 的平均数,即 $\dfrac {1} {n} \displaystyle\sum\limits_{i=1}^n a_i$。 ---- 对于 $10\%$ 的数据,$n \le 50$。 对于 $30\%$ 的数据,$n \le 5000$。 对于另 $20\%$ 的数据,$a_i \le 100$。 对于 $100\%$ 的数据,$1\le n\le 10^5,1\le a_i < 2^{31}$。