时间限制:2s。
给定一个数列a,你需要进行下面三种操作:
- 求出某区间每一个数的按位异或和。
- 求出某区间每一个数的按位或和。
- 求出某区间每一个数的按位与和。
输入格式
第一行包含两个整数 n,m,分别表示该数列数字的个数和操作的总个数。
第二行包含 n 个用空格分隔的整数,其中第 i 个数字表示数列第 i 项的初始值。
接下来 m 行每行包含 3 个整数,表示一个操作,具体如下:
1 l r:输出区间 [l,r] 内每个数的按位异或和。
2 l r:输出区间 [l,r] 内每个数的按位或和。
3 l r:输出区间 [l,r] 内每个数的按位与和。
输出格式
输出包含 m 行整数,即为所有操作的结果。
样例
input1
5 5
9 9 4 9 1
1 1 4
1 2 4
2 1 4
3 2 2
1 4 5
其他样例见下发文件。
数据范围
| 数据点编号 |
n,m |
特殊性质 |
| 1,2,3,4 |
[1,10] |
无 |
| 5,6,7,8 |
[1,104] |
A |
| 9,10,11,12,13,14 |
[1,104] |
无 |
| 15,16,17,18,19,20 |
[1,5×105] |
无 |
特殊性质A:只包含一操作。
对于 100% 的数据:1≤n,m≤5×105,0≤ai≤106。