#P4883. mzf的考验

mzf的考验

背景

mzfmzf 立志要成为一个豪杰,当然,他也是一个 OIer。
他希望自己除了会 OI 之外还会各种东西,比如心理学、吉他、把妹等等。
为了让自己有更大的魅力,他不驼背,不熬夜,整天锻炼,双目炯炯有神,是我们机房最不像 OIer 的人。
然而,在与我们格格不入若干天并且将《易经》研究透彻之后,承受不住我们对他另类的言论,他爆发了。
机房在那一刹那仿佛天塌地陷,世界末日。

题目描述

八卦有乾、坤、震、巽、坎、离、艮、兑;
两两组合,一上一下,形成了六十四卦,每卦六爻,一共三百八十四爻。
爻分阴阳,阳爻性属阳刚,阴爻性属阴柔。天下之大,无奇不有。千奇百怪,皆出此处。
mzfmzf 研究透彻了易经之后,画出了 nn 个奇怪的图案。他说那是他改进出来的更强大的卜卦体系。
每一个图案有二十行,每一行要么是阴爻(00),要么是阳爻(11),作为一个 OIer,我们可以将卦象看成一个个二进制串;

他将 nn 个图案画在了符纸上,然后进行 mm 次操作:

操作 1:翻转区间 [l,r][l,r] 的图案,比如 (3,1,2,5)(3,1,2,5) 变成 (5,2,1,3)(5,2,1,3)

操作 2:mzfmzf 画地为卦,将 [l,r][l,r] 之间的卦象都异或上新画的那个卦象;

操作 3:mzfmzf 会询问机房里的其他人 [l,r][l,r] 之间卦象代表的二进制数权值和。

如果不能正确回答每个操作 33,那么机房风水格局将会改变,我们都将...!

由于 mzfmzf 疯狂之下将我们都捆♂绑♂了起来,所以只能求求你来帮我们解决这个问题。

输入格式

第一行两个正整数:nnmmnn 为序列长度,mm 为操作个数)

第二行 nn 个正整数:aia_i(用 1010 进制数表示每个卦象)(1in)(1\le i\le n)

接下来 mm 行:每行首先一个正整数 optopt 表示操作类型

  1. opt=1opt=1:两个正整数:l,rl,r。请翻转区间 [l,r][l,r]
  2. opt=2opt=2:三个正整数:l,r,dl,r,d。请将区间 [l,r][l,r] 中的所有卦象都异或卦象 dd。(0d<2200\le d\lt 2^{20}
  3. opt=3opt=3:两个正整数:l,rl,r。请查询区间 [l,r][l,r] 的卦象权值和。

输出格式

对于每个 opt=3opt=3 的情况,输出一行答案。

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

29
29
69
24
59

提示

对于 20%20\% 的数据,n1000n\le1000m1000m\le 1000

对于另外 20%20\% 的数据,不存在操作 11

对于另外 20%20\% 的数据,保证 nn22 的次幂,且在操作 11 中,保证 l=i×(2j)+1l=i\times(2^j)+1r=(i+1)×(2j)r=(i+1)\times(2^j),其中 i,ji,j 为任意值。

对于 100%100\% 的数据,n105n\le 10^5m5×104m\le 5\times 10^41lrn1\le l\le r\le n0d<2200\le d<2^{20}