#test04. test04

test04

Description

给定长度为 nn 的序列 aa 和一个数 tt ,其中 t=1,2,3t = 1,2,3 ,求所有 1i<jn1 \leq i < j \leq naiaja_i \oplus a_j 的和

t=1t = 1 ,则 \oplus 代表按位与

t=2t = 2 ,则 \oplus 代表按位或

t=3t = 3 ,则 \oplus 代表按位异或

由于答案过大,你只需要输出答案对 998244353 取模的结果

Input

第一行两个正整数 n,tn,t

第二行 nn 个正整数,代表序列 aa

Output

一行一个正整数,表示答案

Limitation

测试点编号 nn \leq t=t = 特殊性质
1 10410^4 1
2 2
3 3
4 10610^6 1
5 2
6 3
7 1
8 2
9 3
10

对于 100%100\% 的数据,1n106,0ai<231,t=1,2,31 \leq n \leq 10^6,0 \leq a_i < 2^{31} ,t =1,2,3

特殊性质: 0ai10 \leq a_i \leq 1

提示:c++中按位与,按位或,按位异或的符号分别为 &,|,^ 。注意这些符号的运算优先级很低。

Sample

5 1
1 2 3 4 5
9