#arc137d. [arc137_d]Prefix XORs

[arc137_d]Prefix XORs

問題文

長さ NN の整数列 A=(A1,A2,cdots,AN)A=(A_1,A_2,\\cdots,A_N),及び整数 MM が与えられます.

k=1,2,cdots,Mk=1,2,\\cdots,M について,以下の操作をちょうど kk 回行ったあとの ANA_N の値を求めてください.

  • すべての ii (1leqileqN1 \\leq i \\leq N) について,AiA_i の値を A1oplusA2opluscdotsoplusAiA_1 \\oplus A_2 \\oplus \\cdots \\oplus A_i で置き換える. この置き換えはすべての ii に対して同時に行う.

ただしここで,oplus\\oplus はビット単位 mathrmXOR\\mathrm{XOR} 演算を表します.

ビット単位 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)。
一般に kk 個の整数 p1,p2,p3,dots,pkp_1, p_2, p_3, \\dots, p_k のビット単位 mathrmXOR\\mathrm{XOR} は $(\\dots ((p_1 \\oplus p_2) \\oplus p_3) \\oplus \\dots \\oplus p_k)$ と定義され、これは p1,p2,p3,dotspkp_1, p_2, p_3, \\dots p_k の順番によらないことが証明できます。

制約

  • 1leqNleq1061 \\leq N \\leq 10^6
  • 1leqMleq1061 \\leq M \\leq 10^6
  • 0leqAi<2300 \\leq A_i < 2^{30}
  • 入力される値はすべて整数

入力

入力は以下の形式で標準入力から与えられる.

NN MM A1A_1 A2A_2 cdots\\cdots ANA_N

出力

kk に対する答えを空白区切りで出力せよ.


入力例 1

3 2
2 1 3

出力例 1

0 1

操作の度に AA は以下のように変化します.

  • 初期状態:A=(2,1,3)A=(2,1,3)
  • 11 回目の操作後:A=(2,3,0)A=(2,3,0)
  • 22 回目の操作後:A=(2,1,1)A=(2,1,1)

入力例 2

10 12
721939838 337089195 171851101 1069204754 348295925 77134863 839878205 89360649 838712948 918594427

出力例 2

716176219 480674244 678890528 642764255 259091950 663009497 942498522 584528336 364872846 145822575 392655861 844652404