问题描述
我们有一个长度为 N 的整数序列 A。
你将在这个序列上处理 Q 个查询。在第 i 个查询中,给定值 Ti,Xi 和 Yi,请执行以下操作:
- 如果 Ti=1,将 AXi 替换为 AXioplusYi。
- 如果 Ti=2,打印 $A_{X_i} \\oplus A_{X_i + 1} \\oplus A_{X_i + 2} \\oplus \\dots \\oplus A_{Y_i}$。
这里,aoplusb 表示 a 和 b 的按位异或。
什么是按位异或?
整数 A 和 B 的按位异或 AoplusB 定义如下:
- 当把 AoplusB 用二进制表示时,在第 2k 位上(kgeq0)的数字为 1,当且仅当 A 或 B 中有且仅有一个数字在第 2k 位上为 1,否则为 0。
例如,3oplus5=6。(二进制表示为:011oplus101=110。)
约束条件
- 1≤N≤300000
- 1≤Q≤300000
- 0≤Ai<230
- Ti 取值为 1 或 2。
- 如果 Ti=1,则 1≤Xi≤N,并且 0≤Yi<230。
- 如果 Ti=2,则 1≤Xi≤Yi≤N。
- 输入中的所有值均为整数。
输入
输入以以下格式从标准输入给出:
N Q
$A_1 \hspace{7pt} A_2 \hspace{7pt} A_3 \hspace{5pt} \dots \hspace{5pt} A_N$
T1 X1 Y1
T2 X2 Y2
T3 X3 Y3
⋮
TQ XQ YQ
输出
对于每个查询中的 Ti=2,按接收顺序逐行打印结果。
示例输入 1
3 4
1 2 3
2 1 3
2 2 3
1 2 3
2 2 3
示例输出 1
0
1
2
在第一个查询中,我们打印 1oplus2oplus3=0。
在第二个查询中,我们打印 2oplus3=1。
在第三个查询中,我们用 2oplus3=1 替换了 A2。
在第四个查询中,我们打印 1oplus3=2。
示例输入 2
10 10
0 5 3 4 7 0 0 0 1 0
1 10 7
2 8 9
2 3 6
2 1 6
2 1 10
1 9 4
1 6 1
1 6 3
1 1 7
2 3 5
示例输出 2
1
0
5
3
0