#P5066. [Ynoi Easy Round 2014] 人人本着正义之名

[Ynoi Easy Round 2014] 人人本着正义之名

Description

你需要帮珂朵莉维护一个长为 nn01序列 aa,有 mm 个操作:

  • 1 l r:把区间 [l,r][l,r] 的数变成 00
  • 2 l r:把区间 [l,r][l,r] 的数变成 11
  • 3 l r[l,r1][l,r-1] 内所有数 aia_i,变为 aia_iai+1a_{i+1} 按位或的值,这些数同时进行这个操作。
  • 4 l r[l+1,r][l+1,r] 内所有数 aia_i,变为 aia_iai1a_{i-1} 按位或的值,这些数同时进行这个操作。
  • 5 l r[l,r1][l,r-1] 内所有数 aia_i,变为 aia_iai+1a_{i+1} 按位与的值,这些数同时进行这个操作。
  • 6 l r[l+1,r][l+1,r] 内所有数 aia_i,变为 aia_iai1a_{i-1} 按位与的值,这些数同时进行这个操作。
  • 7 l r:查询区间 [l,r][l,r] 的和。

本题强制在线,每次的 l,rl,r 需要与上次答案做 xor\operatorname{xor} 运算,如果之前没有询问,则上次答案为 00

Input Format

第一行两个整数表示 nnmm

第二行 nn 个整数表示序列 aa

之后 mm 行,每行三个整数 opt,l,ropt,l,r,表示是哪一种操作以及操作对应的区间。

Output Format

对于每个查询操作输出一行一个数表示答案。

5 5
0 1 0 0 1
3 2 5
5 2 5
2 2 2
6 1 5
7 1 5
1

Hint

Idea:nzhtl1477,Solution:nzhtl1477,Code:nzhtl1477,Data:nzhtl1477

序列每次的样子:

0 1 0 0 10\ 1\ 0\ 0\ 1 0 1 0 1 10\ 1\ 0\ 1\ 1 0 0 0 1 10\ 0\ 0\ 1\ 1 0 1 0 1 10\ 1\ 0\ 1\ 1 0 0 0 0 10\ 0\ 0\ 0\ 1 0 0 0 0 10\ 0\ 0\ 0\ 1

对于 30%30\% 的数据,n,m1000n,m\leq 1000

对于 50%50\% 的数据,n,m105n,m\leq 10^5

对于另外 30%30\% 的数据,操作和序列均随机生成。

对于另外 10%10\% 的数据,n,m106n,m\leq 10^6

对于 100%100\% 的数据,1n,m3×1061\leq n,m\leq 3 \times 10^60ai10\leq a_i\leq 1