#arc135c. [arc135_c]XOR to All

[arc135_c]XOR to All

問題文

非負整数列 A=(A1,ldots,AN)A = (A_1, \\ldots, A_N) が与えられます。 あなたは次の操作を、何度でも行うことができます(一度も行わなくてもよいです)。

  • 非負整数 xinA1,ldots,ANx\\in \\{A_1,\\ldots,A_N\\} をひとつ選ぶ。
  • すべての ii に対して、AiA_iAioplusxA_i\\oplus x に置き換える(oplus\\oplus はビット単位 mathrmXOR\\mathrm{XOR} 演算を表します)。

操作後の sumi=1NAi\\sum_{i=1}^N A_i としてありうる最大値を求めてください。

ビット単位 mathrmXOR\\mathrm{XOR} 演算とは

非負整数 A,BA, B のビット単位 mathrmXOR\\mathrm{XOR}AoplusBA \\oplus B は、以下のように定義されます。

  • AoplusBA \\oplus B を二進表記した際の 2k2^k (kgeq0k \\geq 0) の位の数は、A,BA, B を二進表記した際の 2k2^k の位の数のうち一方のみが 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 ldots\\ldots ANA_N

出力

操作後の sumi=1NAi\\sum_{i=1}^N A_i としてありうる最大値を出力してください。


入力例 1

5
1 2 3 4 5

出力例 1

19

例えば次のように操作を行うことで、sumi=1NAi\\sum_{i=1}^N A_i1919 にすることが可能です。

  • はじめ、数列 AA は次の状態です:(1,2,3,4,5)(1,2,3,4,5)
  • x=1x = 1 として操作を行うと、数列 AA は次の状態に変化します:(0,3,2,5,4)(0,3,2,5,4)
  • x=5x = 5 として操作を行うと、数列 AA は次の状態に変化します:(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\\sum_{i=1}^N A_i5050 にすることが可能です。


入力例 3

5
3 1 4 1 5

出力例 3

18