[Ynoi2008] rupq

题目描述

给定一个长为 $n$ 的括号序列,每个位置有一个括号 $a_i$,其中 $a_i=1$ 代表是左括号 $'('$,$a_i=0$ 代表是右括号 $')'$。 $a_i$ 位置的括号有一个权值 $b_i$。 对任意括号序列,通过不断删除形如 $'()'$ 的子段直到无法操作,最终可以得到一个唯一的序列,这个序列称为不匹配括号,如 $a_1=')',a_2='(',a_3='(',a_4=')',a_5='('$,这个括号序列的不匹配括号序列为 $')(('$,其不匹配括号对应位置为 $1,2,5$,其不匹配括号对应位置的 $b$ 为 $b_1,b_2,b_5$。 有 $m$ 次操作,操作有以下三类: `1 x y`:进行单点修改,即 $a_x:=1-a_x; b_x:=y$。 `2 l r`:求 $a[l..r]$ 中不匹配括号对应位置的 $b$ 从左到右的 $\texttt {NAND}$ ($32$ 位的按位与非,可以见 https://en.wikipedia.org/wiki/NAND_logic ), $\texttt {max}$(最大值) ,将二者 $\texttt {xor}$ 后输出。如果不匹配括号为空序列,则 $\texttt {NAND}$ 的答案为 $2^{32}-1$, $\texttt {max}$ 的答案为 $0$。 $\texttt {NAND}$ 即以 $c_0=2^{32}-1$ 为初值,然后依次 $c_i=\texttt {NAND}(c_{i-1},b_i)$,对于一个 $n$ 个值的序列 $b$,最后答案为 $c_n$。 `3 l r`:将 $a[l..r]$ 和 $a[r+1..n]$ 交换位置,$b$ 也做同样的操作。

输入输出格式

输入格式


第一行用空格隔开的两个数 $n,m$。 之后 $n$ 行每行用空格隔开的两个数,第 $i$ 行为 $a_i,b_i$。 之后 $m$ 行,每行表示一个操作。

输出格式


对每个操作 $2$ 输出一行表示答案。

输入输出样例

输入样例 #1

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

输出样例 #1

4294967295
4294967284
4294967281

说明

Idea:ccz181078,Solution:ccz181078,Code:ccz181078,Data:nzhtl1477 对于 $100\%$ 的数据, $0 \le a[i] \le 1$。 $0 \le b[i] \le 10^9$。 $1 \le n \le 2\times10^6,1 \le m \le 2\times10^5$。