問題文
非負整数列 A=(A1,ldots,AN) が与えられます。 あなたは次の操作を、何度でも行うことができます(一度も行わなくてもよいです)。
- 非負整数 xinA1,ldots,AN をひとつ選ぶ。
- すべての i に対して、Ai を Aioplusx に置き換える(oplus はビット単位 mathrmXOR 演算を表します)。
操作後の sumi=1NAi としてありうる最大値を求めてください。
ビット単位 mathrmXOR 演算とは
非負整数 A,B のビット単位 mathrmXOR 、AoplusB は、以下のように定義されます。
- AoplusB を二進表記した際の 2k (kgeq0) の位の数は、A,B を二進表記した際の 2k の位の数のうち一方のみが 1 であれば 1、そうでなければ 0 である。
例えば、3oplus5=6 となります (二進表記すると: 011oplus101=110)。
制約
- 1leqNleq3times105
- 0leqAi<230
入力
入力は以下の形式で標準入力から与えられます。
N
A1 ldots AN
出力
操作後の sumi=1NAi としてありうる最大値を出力してください。
入力例 1
5
1 2 3 4 5
出力例 1
19
例えば次のように操作を行うことで、sumi=1NAi を 19 にすることが可能です。
- はじめ、数列 A は次の状態です:(1,2,3,4,5)。
- x=1 として操作を行うと、数列 A は次の状態に変化します:(0,3,2,5,4)。
- x=5 として操作を行うと、数列 A は次の状態に変化します:(5,6,7,0,1)。このとき sumi=1NAi=5+6+7+0+1=19 です。
入力例 2
5
10 10 10 10 10
出力例 2
50
操作を一度も行わないことで、sumi=1NAi を 50 にすることが可能です。
入力例 3
5
3 1 4 1 5
出力例 3
18