#arc135c. [arc135_c]XOR to All

[arc135_c]XOR to All

题目描述

给定一个非负整数的序列 A=(A1,A2,ldots,AN)A=(A_1, A_2, \\ldots, A_N)。你可以进行以下操作任意次数(可能为零)。

  • 选择一个整数 xinA1,A2,ldots,ANx\\in \\{A_1, A_2, \\ldots, A_N\\}
  • 对于每个 ii,将 AiA_i 替换为 AioplusxA_i\\oplus x(其中 oplus\\oplus 表示按位异或运算)。

找到在进行操作后 sumi=1NAi\\sum_{i=1}^N A_i 的最大可能值。

什么是按位异或?

非负整数 AABB 的按位异或 AoplusBA \\oplus B 定义如下:

  • 当将 AoplusBA \\oplus B 用二进制表示时,在第 2k2^k 个位置上(kgeq0k \\geq 0),如果 AABB 中有且仅有一个数为 11,那么这个位置上的数字为 11,否则为 00

例如,我们有 3oplus5=63 \\oplus 5 = 6 (用二进制表示为 011oplus101=110011 \\oplus 101 = 110)。

约束条件

  • 1leqNleq3times1051\\leq N \\leq 3\\times 10^{5}
  • 0leqAi<2300\\leq A_i < 2^{30}

输入

从标准输入中按以下格式给出输入:

NN A1A_1 A2A_2 ldots\\ldots ANA_N

输出

打印在进行操作后 sumi=1NAi\\sum_{i=1}^N A_i 的最大可能值。


示例输入 1

5
1 2 3 4 5

示例输出 1

19

下面是实现 sumi=1NAi=19\\sum_{i=1}^N A_i = 19 的一系列操作。

  • 初始时,序列 AA(1,2,3,4,5)(1,2,3,4,5)
  • 使用 x=1x = 1 进行一次操作,将它变为 (0,3,2,5,4)(0,3,2,5,4)
  • 再使用 x=5x = 5 进行一次操作,将它变为 (5,6,7,0,1)(5,6,7,0,1),此时 sumi=1NAi=5+6+7+0+1=19\\sum_{i=1}^N A_i = 5 + 6 + 7 + 0 + 1 = 19

示例输入 2

5
10 10 10 10 10

示例输出 2

50

不进行任何操作,得到 sumi=1NAi=50\\sum_{i=1}^N A_i = 50


示例输入 3

5
3 1 4 1 5

示例输出 3

18