#abc117d. [abc117_d]XXOR

[abc117_d]XXOR

题目描述

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

对于介于 00KK 之间(包括边界)的整数 XX,令 f(X)=(Xf(X) = (X 异或 A1)A_1) ++ (X(X 异或 A2)A_2) ++ ...... ++ (X(X 异或 AN)A_N)

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

找到 ff 的最大值。

什么是异或运算?

整数 aabb 的按位异或运算,XX,定义如下:

  • XX 用二进制表示时,在第 2k2^k 位上 (kgeq0k \\geq 0) 的数字为 11,如果在 aabb 的二进制表示中,恰好有一个数字在第 2k2^k 位上为 11,否则为 00

例如,33 异或 5=65 = 6。(用二进制表示:011011 异或 101=110101 = 110。)

约束条件

  • 输入中的所有值均为整数。
  • 1leqNleq1051 \\leq N \\leq 10^5
  • 0leqKleq10120 \\leq K \\leq 10^{12}
  • 0leqAileq10120 \\leq A_i \\leq 10^{12}

输入

从标准输入读取数据,具体格式如下:

NN KK A1A_1 A2A_2 ...... ANA_N

输出

打印出 ff 的最大值。


示例输入 1

3 7
1 6 3

示例输出 1

14

最大值为:f(4)=(4f(4) = (4 异或 1)+(41) + (4 异或 6)+(46) + (4 异或 3)=5+2+7=143) = 5 + 2 + 7 = 14


示例输入 2

4 9
7 4 0 3

示例输出 2

46

示例输入 3

1 0
1000000000000

示例输出 3

1000000000000