Random Xor Division

2 secs 1024 MB
OxOmiso's icon OxOmiso

問題文

みそ君は,NN 個の部分からなる横に細長い1本のチョコレートをもらいました。
チョコレートのそれぞれの部分の固さは,AiA_i (1iN)(1≤i≤N) で表されます。
また,チョコレートのそれぞれの部分の境目には切れ込みが入っています。
みそ君は,このチョコレートをある特殊な機械に入れ,いくつかの塊に分割しようと思いました。

その特殊な機械では,どの切れ込みに対しても 12\frac{1}{2} の確率で,その切れ込みでチョコレートを分割するように動作します。

そうして,いくつかの塊に分割されたチョコレートの美味しさを次のように定義します。

  • 美味しさは,各塊に含まれる部分の固さの XORXOR をとった値の総和 である。

例として,A1=3A_1 = 3 , A2=1A_2 = 1 , A3=4A_3 = 4 であるチョコレートを,(A1,A2),(A3)(A_1,A_2),(A_3) に分割したとすると,(A1XORA2=2),(A3=4)(A_1 \,XOR\, A_2 = 2),(A_3 = 4) となり,この分割の仕方での美味しさは 4+2=64+2=6 となります。

最終的に得られる美味しさの期待値(これは有理数になります。)を,注記で述べるように mod  1000000007mod \; 1000000007 で求めてください。

注記

有理数を出力する際は、まずその有理数を分数 yx\frac{y}{x} で表してください。
ここで,x,yx,y は整数であり,xx10000000071000000007 で割り切れてはいけません。
そして,xzy  (mod  1000000007)xz ≡ y \; (mod \; 1000000007) となる 00 以上 10000000061000000006 以下の整数 zz を出力してください。

制約

1N10001≤N≤1000
0Ai1090≤A_i≤10^9

入力

NN
A1  ,  A2  ,  A3  ,...  ,  ANA_1 \;, \;A_2 \;, \;A_3 \;, ... \;, \;A_N

出力

最終的に得られる美味しさの期待値を1行に出力してください。

入力例 1

3
3 1 4

出力例 1

7

分割の仕方は,(3),(1),(4)(3),(1),(4)(3,1),(4)(3,1),(4)(3),(1,4)(3),(1,4)(3,1,4)(3,1,4)44 通りあり,それぞれの美味しさは 8,6,8,68,6,8,6 です。よって,求める期待値は 77 となります。

入力例 2

3
9 9 7

出力例 2

500000019

求める期待値は 15.415.4 となりますが,出力すべき値は,4y62  (mod  1000000007)4*y≡62 \; (mod \; 1000000007) を満たす整数 yy で,この値は 500000019500000019 となります。

提出


Go (1.21)