配点 : 500 点
問題文
変数 X と、X の値を変更する N 種類の操作があります。操作 i は整数の組 (Ti,Ai) で表され、意味は次の通りです。
- Ti=1 のとき、X の値を X and Ai に置き換える。
- Ti=2 のとき、X の値を X or Ai に置き換える。
- Ti=3 のとき、X の値を X xor Ai に置き換える。
変数 X を値 C で初期化した状態から、以下の処理を順に実行してください。
- 操作 1 を行い、操作後の X の値を出力する。
- 続けて、操作 1,2 を順に行い、操作後の X の値を出力する。
- 続けて、操作 1,2,3 を順に行い、操作後の X の値を出力する。
- ⋮
- 続けて、操作 1,2,…,N を順に行い、操作後の X の値を出力する。
${\rm and}, {\rm or}, {\rm xor}$ とは
非負整数 A,B の and,or,xor は、以下のように定義されます。
- A and B を二進表記した際の 2k (k≥0) の位の数は、A,B を二進表記した際の 2k の位の数のうち両方が 1 であれば 1、そうでなければ 0 である。
- A or B を二進表記した際の 2k (k≥0) の位の数は、A,B を二進表記した際の 2k の位の数のうち少なくとも一方が 1 であれば 1、そうでなければ 0 である。
- A xor B を二進表記した際の 2k (k≥0) の位の数は、A,B を二進表記した際の 2k の位の数のうちちょうど一方が 1 であれば 1、そうでなければ 0 である。
例えば、3 and 5=1、 3 or 5=7、 3 xor 5=6 となります。
制約
- 1≤N≤2×105
- 1≤Ti≤3
- 0≤Ai<230
- 0≤C<230
- 入力に含まれる値は全て整数である
入力
入力は以下の形式で標準入力から与えられる。
N C
T1 A1
T2 A2
⋮
TN AN
出力
問題文中の指示に従って N 行出力せよ。
3 10
3 3
2 5
1 12
9
15
12
最初、X の値は 10 です。
- 操作 1 を行うと X の値は 9 になります。
- 続けて操作 1 を行うと X の値は 10 になり、さらに操作 2 を行うと 15 になります。
- 続けて操作 1 を行うと X の値は 12 になり、さらに操作 2 を行うと 13 に、さらに続けて操作 3 を行うと 12 になります。
9 12
1 1
2 2
3 3
1 4
2 5
3 6
1 7
2 8
3 9
0
2
1
0
5
3
3
11
2