#616. 位运算操作

位运算操作

题目描述

有一个变量 XX,以及 NN 种可以改变 XX 值的操作。第 ii 个操作由整数对 (Ti,Ai)(T_i, A_i) 表示,含义如下:

  • 当 Ti=1T_i = 1 时,将 XX 的值替换为 X and AiX\ \text{and}\ A_i。
  • 当 Ti=2T_i = 2 时,将 XX 的值替换为 X or AiX\ \text{or}\ A_i。
  • 当 Ti=3T_i = 3 时,将 XX 的值替换为 X xor AiX\ \text{xor}\ A_i。

请从变量 XX 被初始化为值 CC 的状态开始,依次执行如下操作并输出结果:

  • 执行操作 11,输出执行操作后的 XX 的值;
  • 接着,依次执行操作 1,21,2,输出执行操作后的 XX 的值;
  • 接着,依次执行操作 1,2,31,2,3,输出执行操作后的 XX 的值;
  • …\dots
  • 依次执行操作 1,2,…,N1,2,\dots,N,输出执行操作后的 XX 的值。

另外,题目中对 and\text{and}、or\text{or}、xor\text{xor} 的定义如下(对非负整数 A,BA,B):

  • 在 AA 与 BB 的二进制表示中,第 kk 位(k≥0k\ge 0)为 A,BA,B 的二进制表示中第 kk 位均为 11 时为 11,否则为 00,称为 A and BA\ \text{and}\ B。
  • 在 AA 与 BB 的二进制表示中,第 kk 位(k≥0k\ge 0)为 A,BA,B 的二进制表示中第 kk 位至少有一个为 11 时为 11,否则为 00,称为 A or BA\ \text{or}\ B。
  • 在 AA 与 BB 的二进制表示中,第 kk 位(k≥0k\ge 0)为 A,BA,B 的二进制表示中第 kk 位恰有一个为 11 时为 11,否则为 00,称为 A xor BA\ \text{xor}\ B。

例如,33 and 5=15 = 1,33 or 5=75 = 7,33 xor 5=65 = 6。

输入格式

标准输入按下面格式给出:

其中第一行包含两个整数 NN 和 CC。

接下来 NN 行第 ii 行包含两个整数 TiT_i 和 AiA_i。

输出格式

请按题目要求输出 NN 行,每行一个整数,第 ii 行为在从初始值 X=CX=C 开始依次执行操作 1,2,…,i1,2,\dots,i 后 XX 的值。

样例输入 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

说明

样例 11 解释

最初,XX 的值为 1010。

  • 执行操作 11 后,XX 的值变为 99。
  • 接着再执行操作 11,XX 的值变为 1010,再执行操作 22,XX 的值变为 1515。
  • 接着再执行操作 11,XX 的值变为 1212,再执行操作 22,XX 的值变为 1313,再执行操作 33,XX 的值变为 1212。

数据范围

  • 1≤N≤2×1051 \le N \le 2\times 10^5;
  • 1≤Ti≤31 \le T_i \le 3;
  • 0≤Ai<2300 \le A_i < 2^{30};
  • 0≤C<2300 \le C < 2^{30};
  • 输入中的所有值均为整数。