对于给定的长度为 的数组 ,你需要构建一个能够动态维护区间和信息的数据结构,使得其能支持: 单点修改:将 这个位置上的元素修改为 ,即 ; 区间非平凡异或和查询:输出下标在 这个区间的所有连续子数列的异或和的异或和,即 。例如 的情况,此时的区间非平凡异或和可以表达为:。
输入描述:
第一行输入两个整数  代表数组中的元素数量、操作次数。第二行输入  个整数  代表初始数组。此后  行,每行先输入一个整数  代表操作编号,随后:若  ,在同一行输入三个整数  代表区间增量;若  ,在同一行输入两个整数  代表区间非平凡异或和查询;


输出描述:
对于每一次询问,输出一行一个整数代表区间非平凡异或和。保证至少存在一次询问。
示例1

输入

3 3
1 2 3
2 1 3
1 1 3
2 1 3

输出

2
0

说明

- 最初,A=[1,2,3],询问结果为 1\oplus 2\oplus 3\oplus(1\oplus 2)\oplus (2\oplus 3)\oplus(1\oplus 2\oplus 3)=2

- 修改后,第一个位置被修改为 3 ,询问的结果是 3\oplus 2\oplus 3\oplus(3\oplus 2)\oplus (2\oplus 3)\oplus(3\oplus 2\oplus 3)=0
加载中...