问题陈述
我们有一个变量X和N种操作,可以改变X的值。操作i表示为一对整数(Ti,Ai),具体操作如下:
- 如果Ti=1,它用X {rmand} Ai替换X的值;
- 如果Ti=2,它用X {rmor} Ai替换X的值;
- 如果Ti=3,它用X {rmxor} Ai替换X的值。
初始化X的值为C,按照以下顺序执行以下步骤:
- 执行操作1,然后打印X的结果值。
- 然后,按照顺序执行操作1,2,然后打印X的值。
- 然后,按照顺序执行操作1,2,3,然后打印X的值。
- ⋮
- 然后,按照顺序执行操作1,2,…,N,然后打印X的值。
什么是rmand,rmor,rmxor?
对于非负整数A和B,rmand,rmor,rmxor定义如下:
- 当以二进制形式写出A rmand B时,如果A和B的相同位上都是1,那么在2k位置上(k≥0),值为1,否则为0。
- 当以二进制形式写出A rmor B时,如果A和B的相同位上至少有一个是1,那么在2k位置上(k≥0),值为1,否则为0。
- 当以二进制形式写出A rmxor B时,如果A和B的相同位上只有一个是1,那么在2k位置上(k≥0),值为1,否则为0。
例如,3 rmand 5=1,3 rmor 5=7,3 rmxor 5=6。
约束条件
- 1≤N≤2×105
- 1≤Ti≤3
- 0≤Ai<230
- 0≤C<230
- 输入中的所有值均为整数。
输入
输入以以下格式从标准输入给出:
N C
T1 A1
T2 A2
⋮
TN AN
输出
按照问题陈述的要求,输出N行。
样例输入 1
3 10
3 3
2 5
1 12
样例输出 1
9
15
12
X的初始值为10。
- 操作1将X更改为9。
- 接下来,操作1将X更改为10,然后操作2将其更改为15。
- 接下来,操作1将X更改为12,然后操作2将其更改为13,然后操作3将其更改为12。
样例输入 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