问题描述
我们有一个变量 X 和 N 种改变 X 值的操作。操作 i 表示为整数对 (Ti,Ai),操作如下:
- 如果 Ti=1,则将 X 的值替换为 X and Ai;
- 如果 Ti=2,则将 X 的值替换为 X or Ai;
- 如果 Ti=3,则将 X 的值替换为 X xor Ai。
用 C 的值初始化 X 并按顺序执行以下程序:
- 执行操作 1,然后打印 X 的结果值。
- 接下来,按顺序执行操作 1,2,然后打印 X 的值。
- 接下来,按顺序执行操作 1,2,3,然后打印 X 的值。
- ⋮
- 接下来,按顺序执行操作 1,2,…,N,然后打印 X 的值。
and,or,xor 是什么?
非负整数 A 和 B 的 and,or,xor 定义如下:
- 当 A and B 用二进制表示时,2k 位(k≥0)上的数字如果 A 和 B 该位上的数字都是 1,则为 1,否则为 0。
- 当 A or B 用二进制表示时,2k 位(k≥0)上的数字如果 A 和 B 该位上至少有一个数字是 1,则为 1,否则为 0。
- 当 A xor B 用二进制表示时,2k 位(k≥0)上的数字如果 A 和 B 该位上恰好有一个数字是 1,则为 1,否则为 0。
例如,3 and 5=1,3 or 5=7,3 xor 5=6。
输入格式
输入按照以下格式给出:
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
数据规模
100%的数据:
- 1≤N≤2×105
- 1≤Ti≤3
- 0≤Ai<230
- 0≤C<230
其中约10%的数据 N≤5×103。