Ysgg 得到了一个长度为 2n 的非负整数序列 a。
他定义了一种特殊的合并方式。
首先,将序列中相邻的两个数进行按位或(OR)运算,得到一个长度减半的新序列;然后,将新序列中相邻的两个数进行按位异或(XOR)运算,再得到一个长度减半的新序列。
之后继续交替进行这两种运算:
- 第 1 次合并使用按位或(
OR);
- 第 2 次合并使用按位异或(
XOR);
- 第 3 次合并再次使用按位或(
OR);
- 第 4 次合并再次使用按位异或(
XOR);
- 以此类推。
经过恰好 n 次合并后,整个序列最终只剩下一个整数,将这个整数记为 v。
现在,Ysgg 将对序列进行 m 次修改。第 i 次修改会给出两个整数 pi 和 bi,表示将当前序列中的 api 修改为 bi。
每次修改结束后,请你求出当前序列按照上述规则合并后得到的整数 v。
输入
第一行包含两个整数 n 和 m(1≤n≤17,1≤m≤105),分别表示序列长度的指数以及修改次数。序列的实际长度为 2n。
第二行包含 2n 个整数 a1,a2,…,a2n(0≤ai<230),表示初始序列。
接下来 m 行,第 i 行包含两个整数 pi 和 bi(1≤pi≤2n,0≤bi<230),表示第 i 次修改将 api 改为 bi。
输出
对于每次修改,输出一行一个整数,表示修改完成后当前序列最终合并得到的整数 v。
样例
2 4
1 6 3 5
1 4
3 4
1 2
1 2
Output1
1
3
3
3
说明
初始序列为 [1,6,3,5]。
由于 n=2,每次需要进行两层合并:第一层使用按位或,第二层使用按位异或。
第一次修改后,序列变为 [4,6,3,5]。
第一层合并得到:
- 4OR6=6;
- 3OR5=7。
第二层合并得到:
6XOR7=1.
因此第一次修改后的答案为 1。
数据范围
对于所有测试数据,保证:
- 1≤n≤17;
- 1≤m≤105;
- 0≤ai,bi<230;
- 1≤pi≤2n。
本题共有 20 个测试点,每个测试点 5 分。
特殊性质:
- 性质 A:m=1;
- 性质 B:n=1;
- 性质 C:所有修改操作中的 pi 均相同;
- 性质 D:所有 ai 和 bi 均属于集合 {0,1}。
| 测试点编号 |
n |
m |
特殊性质 |
| 1 |
≤2 |
≤5 |
无 |
| 2 |
≤4 |
≤20 |
| 3∼4 |
≤8 |
≤100 |
| 5∼6 |
≤10 |
≤1000 |
| 7 |
≤17 |
1 |
A |
| 8 |
1 |
≤105 |
B |
| 9 |
≤17 |
C |
| 10 |
D |
| 11∼12 |
≤12 |
≤104 |
无 |
| 13∼14 |
≤15 |
≤5×104 |
| 15∼20 |
≤17 |
≤105 |