题目描述
有一个变量 X,以及 N 种可以改变 X 值的操作。第 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 的值。
另外,题目中对 and、or、xor 的定义如下(对非负整数 A,B):
- 在 A 与 B 的二进制表示中,第 k 位(k≥0)为 A,B 的二进制表示中第 k 位均为 1 时为 1,否则为 0,称为 A and B。
- 在 A 与 B 的二进制表示中,第 k 位(k≥0)为 A,B 的二进制表示中第 k 位至少有一个为 1 时为 1,否则为 0,称为 A or B。
- 在 A 与 B 的二进制表示中,第 k 位(k≥0)为 A,B 的二进制表示中第 k 位恰有一个为 1 时为 1,否则为 0,称为 A xor B。
例如,3 and 5=1,3 or 5=7,3 xor 5=6。
输入格式
标准输入按下面格式给出:
其中第一行包含两个整数 N 和 C。
接下来 N 行第 i 行包含两个整数 Ti 和 Ai。
输出格式
请按题目要求输出 N 行,每行一个整数,第 i 行为在从初始值 X=C 开始依次执行操作 1,2,…,i 后 X 的值。
样例输入 1
3 10
3 3
2 5
1 12
样例输出 1
9
15
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
说明
样例 1 解释
最初,X 的值为 10。
- 执行操作 1 后,X 的值变为 9。
- 接着再执行操作 1,X 的值变为 10,再执行操作 2,X 的值变为 15。
- 接着再执行操作 1,X 的值变为 12,再执行操作 2,X 的值变为 13,再执行操作 3,X 的值变为 12。
数据范围
- 1≤N≤2×105;
- 1≤Ti≤3;
- 0≤Ai<230;
- 0≤C<230;
- 输入中的所有值均为整数。