B. 线性基

内存限制:512 MiB 时间限制:3000 ms 输入文件:xor.in 输出文件:xor.out
题目类型:传统 评测方式:文本比较

题目描述

你有一个序列,需要维护以下两种操作:

0 l r表示询问中取出一些数的最大可能异或和。

1 x表示在序列结尾加一个数

另外你可能需要强制在线的维护这些操作。

输入格式

输入第一行两个正整数 表示数据组数和是否强制在线。

如果则表示所有读入就是真实输入。

否则对于每组读入,你需要把读入的除了操作参数之外的两个数都异或上上一次的答案。对于操作,如果异或完的,则还需要交换

形式化的,假如

对于,你的实际操作是

对于,你的实际操作是

其中为上一次输出的答案。一开始是

对于每组数据,第一行一个正整数表示初始序列长度和操作数。

接下来一行个数表示初始的序列。

之后行每行个数表示操作。

输出格式

对于每个询问,每行输出一个整数表示答案。

样例

输入样例

1 1
3 3
0 1 2
0 1 1
1 3
0 3 4

输出样例

1
3

你的实际操作是询问,序列变成,询问

关于最后一次操作,

由于,所以交换

更多样例

见下发文件。

数据范围与提示

数据范围

所有测试点的数据规模与约定如下:

为所有测试点的的和,为询问的和,为序列中出现过元素的最大值。

测试点编号

对于所有数据,