#P2025052902. 加1与异或和

加1与异或和

题目描述

给你一个初始长度为 nn 的数列 a1,a2,,ana_1, a_2, \ldots, a_n,接下来有 qq 次操作,操作分为如下三种类型:

  • 1 x:在数列 aa 的末尾加入一个数值为 xx 的元素(即:令 nn 增加 11,然后令 an=xa_n = x
  • 2:将数列 aa 中每个元素的数值都增加 11
  • 3:求数列 aa 中所有元素的异或和(即求:a1a2ana_1 \oplus a_2 \oplus \ldots \oplus a_n,这里 \oplus 是异或符号)。

对于每次 3 操作,要求输出对应的结果。

输入格式

第一行,两个整数 nnqq,以空格分隔,分别表示初始数列 aa 的长度以及操作次数。

第二行,nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n,以空格分隔。

接下来 qq 行,每行包含一个操作,形如 1 x23

输出格式

对于每次 3 操作,输出一行,包含一个整数,表示数列 aa 中所有元素的异或和。

样例

3 5
1 2 3
3
1 5
3
2
3
0
5
3
12 10
100 20 17 85 99 62 37 58 3 108 120 55
1 7
3
2
3
1 15
1 78
2
3
1 130
3
81
82
116
246

说明/提示

样例 1 解释

初始的序列为 [1,2,3][ 1, 2, 3 ]

11 次操作为询问异或和,数列中所有元素的异或和为 123=01 \oplus 2 \oplus 3 = 0

22 次操作为加入一个数值为 55 的元素,此时数列变为 [1,2,3,5][1, 2, 3, 5]

33 次操作为询问异或和,数列中所有元素的异或和为 1235=51 \oplus 2 \oplus 3 \oplus 5 = 5

44 次操作为将数列中的每个元素的数值 +1+1,操作后数列变为 [2,3,4,6][ 2, 3, 4, 6 ]

55 次操作为询问异或和,数列中所有元素的异或和为 2346=32 \oplus 3 \oplus 4 \oplus 6 = 3

数据规模与约定

  • 对于 20%20\% 的数据,n,q,ai,x100n, q, a_i, x \le 100
  • 对于 50%50\% 的数据,n,q1000,ai,x<210n, q \le 1000, a_i, x \lt 2^{10}
  • 对于 100%100\% 的数据,1n,q1051 \le n, q \le 10^50ai,x<2200 \le a_i, x \lt 2^{20}