你有一个序列,需要维护以下两种操作:
0 l r表示询问中取出一些数的最大可能异或和。
0 l r
1 x表示在序列结尾加一个数。
1 x
另外你可能需要强制在线的维护这些操作。
输入第一行两个正整数 表示数据组数和是否强制在线。
如果则表示所有读入就是真实输入。
否则对于每组读入,你需要把读入的除了操作参数之外的两个数都异或上上一次的答案。对于操作,如果异或完的,则还需要交换。
形式化的,假如:
对于,你的实际操作是。
其中为上一次输出的答案。一开始是。
对于每组数据,第一行一个正整数表示初始序列长度和操作数。
接下来一行个数表示初始的序列。
之后行每行个数表示操作。
对于每个询问,每行输出一个整数表示答案。
1 1 3 3 0 1 2 0 1 1 1 3 0 3 4
1 3
你的实际操作是询问,序列变成,询问。
关于最后一次操作,。
由于,所以交换。
见下发文件。
所有测试点的数据规模与约定如下:
记为所有测试点的的和,为询问的和,为序列中出现过元素的最大值。
对于所有数据, 。