外部サイトへ移動します

リンク先の URL を確認してから開いてください。

別タブで開く

F - It Looks Difficult

作成者 kammyu、yesantikiss、yuki4869

配点 100 点

実行時間制限
2 秒
メモリ制限
512 MiB

問題文

非負整数 a,ba,b について f(a,b)f(a,b) を以下のように定めます。

  • b=0b=0 なら、f(a,0)=af(a,0)=a
  • b≠0b≠0 なら、f(a,b)=f(a xor b,2×(a and b))f(a,b)=f(a\ \text{xor}\ b,2\times(a\ \text{and}\ b))
    ここで、xor,and\text{xor},\text{and} はそれぞれbitwise xorとbitwise andを表します。

正整数 X,NX,N と長さ NN の非負整数列 AA が与えられます。
長さ NN の非負整数列 B=(B1,B2,…,BN)B=(B_1,B_2,\ldots,B_N) を、次のように定義します。

  • B1=f(X,A1)B_1=f(X,A_1)
  • 2≤i≤N2 \le i \le N に対して、Bi=f(Bi−1,Ai)B_i=f(B_{i-1},A_i)

非負整数列 BB を出力してください。

制約

  • 1≤N≤2×1051\le N\le2\times10^5
  • 0≤X≤1090\le X\le10^9
  • 0≤Ai≤1090\le A_i\le10^9

入力

N XA1 A2 ⋯ AN N\ X\\ A_1\ A_2\ \cdots\ A_N

出力

非負整数列 B=(B1,B2,…,BN)B=(B_1,B_2,\ldots,B_N) を以下の形式で出力してください。

B1 B2 ⋯ BNB_1\ B_2\ \cdots\ B_N

入力例1

2 1
1 2

出力例1

2 4

以下の計算により、B=(2,4)B=(2,4) を得ます。

  • B1=f(X,A1)=f(1,1)=f(1 xor 1,2×(1 and 1))=f(0,2)=f(0 xor 2,2×(0 and 2))=f(2,0)=2B_1=f(X,A_1)=f(1,1)=f(\text{1 xor 1},2\times(\text{1 and 1}))=f(0,2)=f(\text{0 xor 2},2\times(\text{0 and 2}))=f(2,0)=2
  • B2=f(B1,A1)=f(2,2)=f(2 xor 2,2×(2 and 2))=f(0,4)=f(0 xor 4,2×(0 and 4))=f(4,0)=4B_2=f(B_1,A_1)=f(2,2)=f(\text{2 xor 2},2\times(\text{2 and 2}))=f(0,4)=f(\text{0 xor 4},2\times(\text{0 and 4}))=f(4,0)=4

入力例2

3 998244353
0 0 0

出力例2

998244353 998244353 998244353

参加受付は終了しました。