1168: xxxxxxxx-or

Memory Limit:128 MB Time Limit:3.000 S Judge Style:Text Compare Creator:
Submit:46 Solved:11

Description

学校正在进行一项科学研究,研究的过程中需要频繁对一个长度为N的数列(a[1]、a[2]、a[3]、··· ··· 、a[N-1]、a[N])进行操作,这项工作非常枯燥,希望你能帮他们编写程序实现这项工作。
序列中包含有n个自然数。操作分为两种类型:
1、更新操作,将序列中某个元素的值修改为指定值;
2、查询操作,查询指定区间全部元素的异或和。也就是,第L个元素到第R个元素的异或结果,也就是求出(a[L] xor a[L+1] xor ··· xor a[R])的计算结果。

不允许普通用户打印题目,请教师登录后使用。如有疑问请联系管理员!

Input

第一行输入n和m (1 <=n <=10^6)(1 <=m <= 50000)
第二行输入n个数字ai,(0 <=ai <= 10^8)
接下来m行,每行三个数字opt、x、y
opt取值范围为0或1:
①如果opt为0,则表示这是一个询问操作,询问下标x到y直接全部数字的异或值;1<=x<=y<=n
②如果opt为1,则表示这是一个更新操作,把下标为x的数字(a[x])修改为y。1<=x<=n,0<=y<=10^8

Output

仅需要对于每个询问操作输出。
每个循环操作输出一行,仅一个数,表示l到r之间元素的亦或值

Sample Input Copy

6 7
1 2 3 4 5 6
0 1 6
0 1 5
1 3 6
0 2 6
1 3 4
0 3 5
0 1 3

Sample Output Copy

7
1
3
5
7