#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):

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

例如,33 and 5=15 = 133 or 5=75 = 733 xor 5=65 = 6

输入格式

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

其中第一行包含两个整数 NNCC

接下来 NN 行第 ii 行包含两个整数 TiT_iAiA_i

输出格式

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

样例输入 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
  • 接着再执行操作 11XX 的值变为 1010,再执行操作 22XX 的值变为 1515
  • 接着再执行操作 11XX 的值变为 1212,再执行操作 22XX 的值变为 1313,再执行操作 33XX 的值变为 1212

数据范围

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