#P7346. 【DSOI 2021】归零

【DSOI 2021】归零

Description

若觉得题意不清,请造访 “输入格式” 查看简明化题意。

请查看题目保证以确保能 solve the problem .

我想问的只有 ....

如果我有一串长度为 nn 的序列 aa ,编号从 1n1\rightarrow n , aia_i 表示第 ii 个数.

我共将进行 mm 次四种类型的操作,其编号为给出的顺序 :

\left \lceil \right. 如果我有 xxyy 两值,我会用阴魔法将序列中所有下标 i0(modx)i \equiv 0 \pmod{x} aia_i 异或上 yy\left. \right \rfloor

\left \lceil \right. 同时我也会三省自身,问问自己序列中 axa_x 的值 。\left. \right \rfloor

\left \lceil \right. 多次轮回让我明白,只有完美把握住每一次机遇,我才可以占据更大的有利因素。因而我将估量 axa_x 和我的预期 yy ,如果 axya_x \le y ,我将轮回并执行编号为 uvu \rightarrow v 的操作中的 阴魔法操作\left. \right \rfloor

\left \lceil \right. 另外,为了防止遗忘,我还会轮回执行编号为 xx 的操作。\left. \right \rfloor

你也知道,轮回的存档点是不能交错的,所以我的轮回是不会相交的。

请问你,能否帮我,回答我心中的问答?

Input Format

第一行两个数 nnmm ,表示序列长度和操作数。
第二行 nn 个数 aia_i ,表示初始序列。
接下来有 mm 行,有若干数字,第 i+2i + 2 行表示编号为 ii 的操作,第一个数 opop11 \rightarrow 4 的一个 :

  • op=1op = 1 : 读入 3 个数 11 , xx , yy , 对 \forall i0(modx)i \equiv 0 \pmod{x} ( 也就是 xx , 2x2xkxkx kZ+k \in Z^+ k×xnk \times x \le n ), ai=aiya_i = a_i \oplus y\oplus 表示异或)。
  • op=2op = 2 : 读入 2 个数 22 , xx ,输出 axa_x
  • op=3op = 3 : 读入 5 个数 33 , xx , yy , uu , vv , 若 axya_x \le y,执行编号为 uvu \rightarrow v 内所有 op=1op = 1 的操作,否则无视此操作。保证 uv<iu \le v < i
  • op=4op = 4 : 读入 2 个数 44 , xx , 执行编号为 xx 的操作。保证 x<ix < i

因为轮回不交错:题目保证,若 opi=3op_i = 3则编号为 ui1u\rightarrow i-1 的操作,类型一定不为 33 or 44 同时,若 opi=4op_i = 4则编号为 x+1i1x+1\rightarrow i-1 的操作,类型一定不为 33 or 44 ( 但是 xx 位置可为 3344 类型操作,即可以调用 )。

用数学语言就是:opi=3op_i = 3 ,则 [u,i)[u , i) 一定没有 33 or 44 操作 ; 若 opi=4op_i = 4 , 则 (x,i)(x, i) 一定没有 33 or 44 操作。

Output Format

输出若干行。
每一行为 op=2op=2 类型操作的询问结果或 op=4op = 4 类型操作调用的询问操作的询问结果。

6 10
1 1 4 5 1 4
1 1 6
1 2 8
4 2
4 3
4 4
4 5 
4 6
2 1
2 3
2 4
7
2
3
6 10
2 3 7 1 9 0
1 1 2
3 4 10 1 1
1 3 3
4 3
2 5
2 6
1 2 8
4 5
4 8
2 6
9
0
9
9
8

Hint

【对于样例 2,下面给出其每个操作过程中序列的值】

操作 a1a_1 a2a_2 a3a_3 a4a_4 a5a_5 a6a_6 说明
2 3 7 1 9 0 读入
1st1_{st} 0 1 5 3 11 2 161\rightarrow6xorxor 22
2nd2_{nd} 2 3 7 1 9 0 a4=310a_4 = 3 \le 10 ,进行 11 操作
3rd3_{rd} 4 3 33 // 66xorxor 3
4th4_{th} 7 0
5th5_{th} 输出 a5a_5
6th6_{th}
7th7_{th} 11 9 8 22 // 44 // 66xorxor 88
8th8_{th} 输出 a5a_5
9th9_{th}
10th10_{th} 输出 a6a_6

【关于“保证”的说明】

例如一串操作类型为 op1=1op_1 = 1op2=4op_2 = 4op3=2op_3 = 2op4=3op_4 = 3op5=1op_5 = 1op6=4op_6=4。那么 op4op_4 所对应的 uuvv 只能为 u=3u = 3v=3v = 3 ,因为 u2u \le 2 会导致其范围内包含 44 操作;而 op6op_6 所对应的 xx 可以是 4455 ,因为这样子 xx 的右边到编号 66 的左边都没有 3344 操作。


【数据范围】
本题采用捆绑测试。 你必须通过 Subtask 中所有的测试点才能获得该 Subtask 的分数。 | Subtask | 特殊性质 | 分值 | | :----------: | :----------: |:--------:| | 1 | 为样例 22 | 2 pts| | 2 | n10n \le 10 , m10m \le 10 | 8 pts | | 3 | n1000n \le 1000 , m1000m \le 1000 | 10 pts | | 4 | n104n \le 10^4 , m104m \le 10^4 | 10 pts | | 5 | n105n \le 10^5 , m5×105m \le 5 \times 10^5 , 无操作 44 | 10 pts | | 6 | n105n \le 10^5 , m5×105m \le 5 \times 10^5 , 无操作 33 | 10 pts | | 7 | n105n \le 10^5 , m5×105m \le 5 \times 10^5 , 数据随机 | 18 pts | | 8 | n105n \le 10^5 , m5×105m \le 5 \times 10^5| 32 pts | 对于 100%100\% 的数据,保证 1n1051 \le n \le 10^5 , m5×105m \le 5 \times 10^5,保证过程及结果的所有值都在 int 范围内。