#AT1068. 异或

异或

题目描述

给定 NN 个非负整数 A1,A2,,ANA_1,A_2,…, A_N 和另一个非负整数 kk

对于0到kk之间的一个整数 XX,定义 f(X)=(Xf(X)=(X 异或 A1)+(XA_1)+(X 异或 A2)++(XA_2)+ … +(X 异或ANA_N)。

这里,对于非负整数 aabbaa 异或bb表示 aabb的按位异或。

找到ff的最大值。

什么是异或运算?

异或运算 XX(表示 aa 异或 bb)定义如下

XX 表示为二进制时,2k2^k(k>0)(k > 0)的数字是1当且仅当在a和b的二进制表示中,恰好有一个数字在 2k2^k位上为 1;否则为 0。

例如,3异或5=6(二进制表示为:011异或 101= 110)。

输入

第一行两个整数N,KN,K

第二行表示NN个整数的序列

输出

输出ff的最大值

3 7
1 6 3
14

样例解释

最大值是:ff(4)=(4异或 1)+(4异或 6)+(4异或3)=5+2+7= 14.

4 9
7 4 0 3
46
1 0
1000000000000
1000000000000

提示

1N105 1 \leq N \leq 10^5

0K10120 \leq K \leq 10^{12}

0Ai10120 \leq A_i \leq 10^{12}