#abc261e. [abc261_e]Many Operations

[abc261_e]Many Operations

問題文

変数 XX と、XX の値を変更する NN 種類の操作があります。操作 ii は整数の組 (Ti,Ai)(T_i,A_i) で表され、意味は次の通りです。

  • Ti=1T_i=1 のとき、XX の値を XrmandAiX\\ {\\rm and}\\ A_i に置き換える。
  • Ti=2T_i=2 のとき、XX の値を XrmorAiX\\ {\\rm or}\\ A_i に置き換える。
  • Ti=3T_i=3 のとき、XX の値を XrmxorAiX\\ {\\rm xor}\\ A_i に置き換える。

変数 XX を値 CC で初期化した状態から、以下の処理を順に実行してください。

  • 操作 11 を行い、操作後の XX の値を出力する。
  • 続けて、操作 1,21,2 を順に行い、操作後の XX の値を出力する。
  • 続けて、操作 1,2,31,2,3 を順に行い、操作後の XX の値を出力する。
  • vdots\\vdots
  • 続けて、操作 1,2,ldots,N1,2,\\ldots,N を順に行い、操作後の XX の値を出力する。

rmand,rmor,rmxor{\\rm and}, {\\rm or}, {\\rm xor} とは 非負整数 A,BA, Brmand,rmor,rmxor{\\rm and}, {\\rm or}, {\\rm xor} は、以下のように定義されます。

  • ArmandBA\\ {\\rm and}\\ B を二進表記した際の 2k2^k (kgeq0k \\geq 0) の位の数は、A,BA, B を二進表記した際の 2k2^k の位の数のうち両方が 11 であれば 11、そうでなければ 00 である。
  • ArmorBA\\ {\\rm or}\\ B を二進表記した際の 2k2^k (kgeq0k \\geq 0) の位の数は、A,BA, B を二進表記した際の 2k2^k の位の数のうち少なくとも一方が 11 であれば 11、そうでなければ 00 である。
  • ArmxorBA\\ {\\rm xor}\\ B を二進表記した際の 2k2^k (kgeq0k \\geq 0) の位の数は、A,BA, B を二進表記した際の 2k2^k の位の数のうちちょうど一方が 11 であれば 11、そうでなければ 00 である。

例えば、3rmand5=13\\ {\\rm and}\\ 5 = 13rmor5=73\\ {\\rm or}\\ 5 = 73rmxor5=63\\ {\\rm xor}\\ 5 = 6 となります。

制約

  • 1leqNleq2times1051 \\leq N \\leq 2\\times 10^5
  • 1leqTileq31\\leq T_i \\leq 3
  • 0leqAilt2300\\leq A_i \\lt 2^{30}
  • 0leqClt2300\\leq C \\lt 2^{30}
  • 入力に含まれる値は全て整数である

入力

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

NN CC T1T_1 A1A_1 T2T_2 A2A_2 vdots\\vdots TNT_N ANA_N

出力

問題文中の指示に従って NN 行出力せよ。


入力例 1

3 10
3 3
2 5
1 12

出力例 1

9
15
12

最初、XX の値は 1010 です。

  • 操作 11 を行うと XX の値は 99 になります。
  • 続けて操作 11 を行うと XX の値は 1010 になり、さらに操作 22 を行うと 1515 になります。
  • 続けて操作 11 を行うと XX の値は 1212 になり、さらに操作 22 を行うと 1313 に、さらに続けて操作 33 を行うと 1212 になります。

入力例 2

9 12
1 1
2 2
3 3
1 4
2 5
3 6
1 7
2 8
3 9

出力例 2

0
2
1
0
5
3
3
11
2