愤怒的XiaoX

题目背景

### 答疑请到 https://www.luogu.org/discuss/show?postid=79498 在几天前的模拟赛上,$XiaoX$又双叒叕$AK$了 他想卡一卡大家,于是他出了下面的一道题:

题目描述

给定一个序列,你要维护下列操作: $1$ $l$ $r$ $k$,表示从$l$到$r$的数字最后$k$位按位取反 $2$ $l$ $r$ $k$,表示从$l$到$r$的数字最后$k$位进行翻转 $3$ $w$ 表示查询$w$这个位置的值 为了降低这道题的难度,我们做出以下规定: 对于序列的操作,我们的$k$在一定范围内是一定的 我们一共会有$t$个$k$ 每个$k$后面跟着一些操作 这些操作的$k$(修改的位数)都是相同的 ### 按位取反定义: 比如说,一个数的二进制表示是: ``` 10100111 ``` 对后5位取反后变成: ``` 10111000 ``` ### 翻转定义: 比如说,一个数的二进制表示是: ``` 10100111 ``` 对后5位翻转后变成: ``` 10111100 ```

输入输出格式

输入格式


第一行,两个整数$n$,$t$,表示序列长度和$k$的数量 第二行,$n$个数,表示原始序列 下面$t$组操作,对于每组操作第一行两个数$q_i$,$k_i$,表示操作数量和在这些操作中$k$的值 下面$q_i$行,表示该组操作

输出格式


对于每个$3$操作,输出一行一个整数,表示答案的大小

输入输出样例

输入样例 #1

5 2
665667089 948925818 1118302620 288255565 1682529647 
5 2
1 3 4
3 1
2 3 5
2 2 4
3 4
5 25
1 3 3
1 3 4
3 1
2 1 5
2 1 3

输出样例 #1

665667089
288255566
665667089

说明

对于$10$%的数据,没有$1,2$操作 对于另$10$%的数据,没有$1$操作 对于另$10$%的数据,没有$2$操作 对于$50$%的数据,$t<=1$ 对于$70$%的数据,$t<=2$ 对于$100$%的数据,$t<=5$,$1<=n<=50000,1<=q_i<=20000,k<=25$,初始序列制造方式为$rand()*rand()$(windows下) 感谢@swhsz验题