当前没有测试数据。
4.和或异或
题目描述
小明找来了一个2n长度的数组。它第一次先对所有相邻两个数执行操作,得到一个2n−1长度的数组。也就是说,如果一开始时a[1],a[2],…,a[2n],执行操作后,会得到$a[1] \mid a[2],a[3] \mid a[4],\ldots,a[2^n-1] \mid a[2^n]$。
第二次操作,小明会将所有相邻两个数执行∧操作,得到一个2n−2长度的数组,假如第一次操作后的数组是b[1],b[2],…,b[2n−1],执行操作后会变成$b[1] \wedge b[2],b[3] \wedge b[4],\ldots,b[2^{n-1}-1] \wedge b[2^{n-1}]$。
第三次操作,小明仍然将执行∣操作,第四次小明执行∧操作。如此交替进行。
小明还会执行Q次修改操作。每次修改原先的2n长度的数组中的某一个数,对于每次修改操作,你需要输出n次操作后(最后一定只剩下唯一一个数)剩下的那个数是多少。
输入格式
第一行两个数n,Q。
接下来一行2n个数a,表示一开始的数组。
接下来Q行,每行两个数xi,yi,表示小明这次的修改操作是将axi改成yi。
输出格式
Q行,表示每次修改操作后执行n次操作后剩下的那个数的值。
数据范围与提示
- 对于30%的数据,n≤17,Q=1;
- 对于另外20%的数据,n≤10,Q≤1000;
- 对于再另外30%的数据,n≤12,Q≤100000;
- 对于100%的数据,1≤n≤17,1≤Q≤105,1≤xi≤2n,0≤yi<230,0≤ai<230。
样例
2 4
1 6 3 5
1 4
3 4
1 2
1 2
1
3
3
3
说明
第一次修改,4,6,3,5 → 6,7 → 1。
第二次修改,4,6,4,5 → 6,5 → 3。
第三次修改,2,6,4,5 → 6,5 → 3。
第四次修改,2,6,4,5 → 6,5 → 3。