绝世丑角

题目背景

$$ \begin{array}{cr} \text{我好恨 恨这固执到厚颜无耻的人}\\ \text{竟和曾经快乐的我同个模样}\\ \text{即使信仰和记忆都}\overset{\text{Runtime Error}}{\text{遍体鳞伤}}\\ \text{仍在深渊妄想得到}\overset{\text{return }{\color{#EE0000}0}\text{;}}{{\color{#EE0000}\text{你}}\text{的回望}}\\ &\text{——《绝世丑角》} \end{array} $$ ![](bilibili:BV12i4y1976j) --- 在被修改的、破碎不堪的回忆中取出仅有的连续片段。 泠珞还是想知道,能否从中提取出,有意义的回忆呢。

题目描述

对于两个非负整数 $a,b$,定义它们的 Nim 积为 $a\otimes b=\operatorname{mex}(\{(a\otimes d)\oplus(c\otimes b)\oplus (c\otimes d)|0\le c<a,0\le d<b\})$,其中 $x\oplus y$ 表示 $x$ 与 $y$ 的二进制异或和,$\operatorname{mex}(S)$ 表示**不存在**于 $S$ 中的最小的非负整数。 给定一个长度为 $n$ 的非负整数序列 $a_1,a_2,\cdots,a_n$,给定 $q$ 次操作,每次操作有三个参数 $(t,\ell,r)$。 - 若 $t=1$,表示对于 $i=\ell,\ell+1,\cdots,r$,令 $a_i\gets a_i\otimes a_i$。 - 若 $t=2$,表示查询 $a_\ell\oplus a_{\ell+1}\oplus\cdots\oplus a_r$。 - 若 $t=3$,表示查询 $a_\ell+ a_{\ell+1}+\cdots+ a_r$。 你需要输出每次查询的结果。

输入输出格式

输入格式


第一行两个正整数 $n,q$。 接下来一行 $n$ 个非负整数,第 $i$ 个表示 $a_i$。 接下来 $q$ 行,每行三个正整数 $t,\ell,r$ 表示当前操作的参数。

输出格式


对于每次查询操作,输出一行一个非负整数表示答案。

输入输出样例

输入样例 #1

6 6
3 6 1 4 2 5
2 2 5
3 1 4
1 5 5
2 1 6
1 1 3
3 5 6

输出样例 #1

1
14
6
8

输入样例 #2

10 10
1234567890 130113 3614258193 1000000007 3146527164 3141592653 2147483648 998244353 2346886432 20151114
2 1 10
3 5 8
1 2 9
3 1 4
1 5 8
1 3 10
2 1 9
3 1 8
1 1 4
2 8 8

输出样例 #2

2499610911
9433847818
4602641167
4258698016
17656837678
704481058

输入样例 #3

10 10
36 14 35 0 13 0 11 3 5 20
2 1 10
3 1 4
2 2 5
3 1 8
3 1 4
2 5 6
2 8 9
3 3 7
3 1 10
2 1 5

输出样例 #3

29
85
32
112
85
13
6
59
137
4

输入样例 #4

10 10
36 14 35 0 13 0 11 3 5 20
1 1 10
2 1 4
1 2 5
2 1 8
2 1 4
2 5 6
2 8 9
1 3 7
1 1 10
2 1 5

输出样例 #4

12
21
22
14
5
9

输入样例 #5

10 10
36 14 35 0 13 0 11 3 5 20
1 5 5
3 1 4
2 2 5
3 1 8
1 9 9
2 5 6
1 9 9
3 3 7
3 1 10
2 1 5

输出样例 #5

85
39
109
10
56
133
3

输入样例 #6

10 10
36 14 35 0 13 0 11 3 5 20
1 1 10
3 1 4
2 2 5
3 1 8
1 1 10
2 5 6
1 1 10
3 3 7
3 1 10
2 1 5

输出样例 #6

112
52
139
14
76
179
7

输入样例 #7

10 10
36 14 35 0 13 0 11 3 5 20
1 3 8
1 1 6
1 2 10
3 1 4
2 2 5
3 1 8
2 5 6
3 3 7
3 1 10
2 1 5

输出样例 #7

119
61
139
8
73
176
15

说明

**【样例 #1 解释】** 第一次操作是查询,输出 $6\oplus 1\oplus 4\oplus 2=1$。 第二次操作是查询,输出 $3+6+1+4=14$。 第三次操作是修改,序列变为 $[3,6,1,4,3,5]$。 第四次操作是查询,输出 $3\oplus6\oplus1\oplus4\oplus3\oplus5=6$。 第五次操作是修改,序列变为 $[2,5,1,4,3,5]$。 第六次操作是查询,输出 $3+5=8$。 **【数据范围】** **本题采用捆绑测试。** 对于 $100\%$ 的数据,$1\le n\le2.5\times10^5$,$0\le a_i<2^{32}$,$1\le q\le 1\times10^5$,$1\le t\le 3$,$1\le \ell\le r\le n$。保证最后一次操作是查询操作。 | 子任务编号 | 分值 | $n\le $ | $q\le $ | $a_i<$ | 特殊性质 | | :----------: | :----------: | :----------: | :----------: | :----------: | :----------: | | $1$ | $2$ | $2.5\times10^5$ | $1\times10^5$ | $2^{32}$ | $t\neq 1$ | | $2$ | $11$ | $2.5\times10^5$ | $1\times10^5$ | $2^{32}$ | 若 $t=1$,则 $\ell=r$ | | $3$ | $19$ | $2.5\times10^5$ | $1\times10^5$ | $64$ | 无| | $4$ | $13$ | $1\times10^5$ | $3\times10^4$ | $2^{32}$ | $t\neq 3$ | | $5$ | $17$ | $2.5\times10^5$ | $1\times10^5$ | $2^{32}$ | $t\neq 3$ | | $6$ | $7$ | $2.5\times10^5$ | $1\times10^5$ | $2^{32}$ | 若 $t=1$,则 $\ell=1,r=n$ | | $7$ | $23$ | $2.5\times10^5$ | $1\times10^5$ | $2^{32}$ | 所有 $t=1$ 的操作在 $t\neq 1$ 前 | | $8$ | $3$ | $1\times10^5$ | $3\times10^4$ | $2^{32}$ | 无 | | $9$ | $5$ | $2.5\times10^5$ | $1\times10^5$ | $2^{32}$ | 无 |