每个测试文件均包含多组测试数据。第一行输入一个整数 代表数据组数,每组测试数据描述如下:第一行包含两个整数 ,分别表示序列长度和操作次数。第二行包含 个整数 ,表示初始序列。接下来 行,每行代表一次操作: 输入三个整数 :将 修改为 。 输入两个整数 :对于当前序列的每一个长度不超过 的非空子序列,计算其中所有元素的按位或(OR)值,并输出所有这些 OR 值的异或和。除此之外,保证单个测试文件的 之和不超过 , 之和不超过 。
对于每个询问操作,新起一行输出对应的答案。
1 3 4 1 2 3 2 2 1 2 4 2 2 2 1
3 7 6
对于样例中的第一次询问 ,当前序列为 。长度不超过 的所有非空子序列及其 OR 值分别为: ,OR 为 ,OR 为 ,OR 为 ,OR 为 ,OR 为 ,OR 为 因此异或和为 。修改后序列变为 。对于第二次询问 ,所有长度不超过 的非空子序列的 OR 值异或和为 。对于第三次询问 ,只需考虑长度为 的子序列,因此答案为 。