mzf的考验

题目背景

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

题目描述

八卦有乾、坤、震、巽、坎、离、艮、兑; 两两组合,一上一下,形成了六十四卦,每卦六爻,一共三百八十四爻。 爻分阴阳,阳爻性属阳刚,阴爻性属阴柔。天下之大,无奇不有。千奇百怪,皆出此处。 $mzf$研究透彻了易经之后,画出了$n$个奇怪的图案。他说那是他改进出来的更强大的卜卦体系。 每一个图案有二十行,每一行要么是阴爻$(0)$,要么是阳爻$(1)$,作为一个$OIer$,我们可以将卦象看成一个个二进制串; 他将$n$个图案画在了符纸上,然后进行$m$次操作: 操作1:翻转区间$[l,r]$的图案,比如$(3,1,2,5)$变成$(5,2,1,3)$; 操作2:$mzf$画地为卦,将$[l,r]$之间的卦象都异或上新画的那个卦象; 操作3:$mzf$会询问机房里的其他人$[l,r]$之间卦象代表的二进制数权值和。 如果不能正确回答每个操作$3$,那么机房风水格局将会改变,我们都将...! 由于$mzf$疯狂之下将我们都捆♂绑♂了起来,所以只能求求你来帮我们解决这个问题。

输入输出格式

输入格式


第一行两个正整数:$n$,$m$($n$为序列长度,$m$为操作个数) 第二行$n$个正整数:$a[i]$ (用$10$进制数表示每个卦象)$(1<=i<=n)$ 接下来$m$行:每行首先一个正整数$opt$表示操作类型 1. $opt=1$:两个正整数:$l,r$。请翻转区间 $[l,r]$; 2. $opt=2$:三个正整数:$l,r,d$。请将区间$[l,r]$中的所有卦象都异或卦象$d$。($0\le d\lt 2^{20}$) 3. $opt=3$:两个正整数:$l,r$。请查询区间 $[l,r]$ 的卦象权值和。

输出格式


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

输入输出样例

输入样例 #1

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

输出样例 #1

29
29
69
24
59

说明

对于 $20\%$ 的数据,$n\le1000$,$m\le 1000$。 对于另外 $20\%$ 的数据,不存在操作 $1$。 对于另外 $20\%$ 的数据,保证 $n$ 为 $2$ 的次幂,且在操作 $1$ 中,保证 $l=i\times(2^j)+1$,$r=(i+1)\times(2^j)$,其中 $i,j$ 为任意值。 对于 $100\%$ 的数据,$n\le 10^5$,$m\le 5\times 10^4$,$1\le l\le r\le n$,$0\le d<2^{20}$。