#CF339D. Xenia 与位运算
Xenia 与位运算
D. Xenia 与位运算
每次测试时间限制:2 秒
内存限制:256 兆字节
新手程序员 Xenia 有一个由 个非负整数组成的序列 :。Xenia 正在学习位运算。为了更好地理解它们的工作原理,Xenia 决定为序列 计算某个值 。
具体来说,计算值 需要多次迭代。
- 第一次迭代:Xenia 写出一个新序列 $a_1 \operatorname{or} a_2,\ a_3 \operatorname{or} a_4,\ \dots,\ a_{2^n-1} \operatorname{or} a_{2^n}$,包含 个元素。也就是说,她写出相邻元素的按位或。
- 第二次迭代:Xenia 写出第一次迭代后得到序列的相邻元素的按位异或。
- 第三次迭代:Xenia 写出第二次迭代后得到序列的相邻元素的按位或。
- 依此类推,按位异或和按位或交替进行。最终,她得到一个只含一个元素的序列,这个元素就是 。
我们来看一个例子。假设序列 。那么写出所有变换:
$(1, 2, 3, 4) \to (1 \operatorname{or} 2 = 3,\ 3 \operatorname{or} 4 = 7) \to (3 \operatorname{xor} 7 = 4)$
结果是 。
现在,你得到了 Xenia 的初始序列。但是仅计算给定序列的值 太简单了,因此你还会收到额外的 个查询。每个查询是一对整数 。查询 表示你需要执行赋值 。每次查询之后,你需要输出新序列 对应的新值 。
输入
第一行包含两个整数 和 (,)。
下一行包含 个整数 ()。
接下来的 行,每行包含一个查询。第 行包含整数 (,)——第 个查询。
输出
输出 个整数——第 个整数表示第 次查询之后序列 的值 。
示例
输入
2 4
1 6 3 5
1 4
3 4
1 2
1 2
输出
1
3
3
3
说明
有关位运算的更多信息,可以参考这个链接:http://en.wikipedia.org/wiki/Bitwise_operation