#codefestivalchinaj. [code_festival_china_j]XORAND

[code_festival_china_j]XORAND

题目

Yu喜欢位与运算和大数字。Yu的朋友Yihuo喜欢位异或运算和小数字。他们是好朋友,每当有人给他们发送一个数组作为礼物时,他们会互相分享这些数字。

对于一个非负整数数组 p1,p2,...,pkp_1, p_2, ..., p_k,令 DD 为数组中所有数字的位与运算结果 (p1p_1AND\rm{\\ AND\\ }p2p_2AND\rm{\\ AND\\ }......AND\rm{\\ AND\\ }pkp_k),令 XX 为数组中所有数字的位异或运算结果 (p1p_1XOR\rm{\\ XOR\\ }p2p_2XOR\rm{\\ XOR\\ }......XOR\rm{\\ XOR\\ }pkp_k)。Yu 对于 p1,p2,...,pkp_1, p_2, ..., p_k 的满意度值为 DD,Yihuo 对于相同数组的满意度值为 X-X(注意,Yihuo喜欢小数字,XX 越小,Yihuo满意度越高)。

每当他们收到一个非负整数数组 p1,p2,...,pkp_1, p_2, ..., p_k 作为礼物时,他们将数组分成两部分,Yu 得到前半部分,Yihuo 得到后半部分。他们切割数组的位置是为了使得他们各自获得的满意度值之和最大。更确切地说,他们在第 ii 个数字之后切割数组,其中 1i<k1 \leq i < k,这样可以最大化 Yu 得到 p1,p2,...,pip_1, p_2, ..., p_i 的满意度值以及 Yihuo 得到 pi+1,pi+2,...,pkp_{i+1}, p_{i+2}, ..., p_k 的满意度值。

给定一个由 NN 个非负整数组成的数组 AAQQ 个查询。第 jj 个查询问:"当我们将 Alj,Alj+1,...,ArjA_{l_j}, A_{l_j+1}, ..., A_{r_j} 给 Yu 和 Yihuo 时,他们的满意度值之和是多少?"你的任务是按照给定的顺序回答所有的查询。

注意,每个查询由 22 个整数 lj,rjl_j, r_j (1lj<rjN1 \leq l_j < r_j \leq N) 描述,但这些整数并没有直接给出。你必须根据上一个查询的答案计算出这两个整数,如输入部分所述。这意味着你必须按照给定的顺序计算查询的答案。


输入

NN QQ A1A_1 A2A_2 ... ANA_N l1l'_1 r1r'_1 l2l'_2 r2r'_2 : lQl'_Q rQr'_Q

  • 第一行,用空格分隔的两个整数 NN (2N1052 \leq N \leq 10^5) 和 QQ (1Q1051 \leq Q \leq 10^5),分别表示数组 AA 的元素数量和查询数量。
  • 第二行,用空格分隔的 NN 个整数,第 ii 个 (1iN1 \leq i \leq N) 整数是 AiA_i (0Ai<2310 \leq A_i < 2^{31})。
  • 接下来的 QQ 行是查询的信息。第 jj 行 (1jQ1 \leq j \leq Q) 包含用空格分隔的 22 个整数 ljl'_j (1ljN1 \leq l'_j \leq N) 和 rjr'_j (1rjN1 \leq r'_j \leq N)。

根据以下方法计算查询中确切的整数 lj,rjl_j, r_j

  • l1=l1l_1 = l'_1, r1=r1r_1 = r'_1
  • 对于满足 2jQ2 \leq j \leq Q 的所有 jj,令 mj1m_{j - 1}(j1)(j - 1)-th 查询的答案。
    • lj=((lj+mj1)l_j = ((l'_j + |m_{j - 1}|)MOD\rm{\\ MOD\\ }N)+1N) + 1
    • rj=((rj+mj1)r_j = ((r'_j + |m_{j - 1}|)MOD\rm{\\ MOD\\ }N)+1N) + 1

注意,每个答案可能是一个负数,ljl_jrjr_j 使用 mj1m_{j - 1} 的绝对值来计算。保证 1lj<rjN1 \leq l_j < r_j \leq N

输出

输出 QQ 行。第 jj 行 (1jQ1 \leq j \leq Q) 应该包含第 jj 个查询的答案。请确保在输出末尾插入换行符。


输入示例 1


7 4
7 3 5 4 6 3 1
2 5
2 5
3 4
5 1

输出示例 1


-1
2
2
5

每个查询的答案如下所示。

  • 对于第一个查询,l1=2l_1 = 2r1=5r_1 = 5。数字数组 3,5,4,63, 5, 4, 6 将被分为 3,53, 54,64, 6,这提供给 Yu 的满意度值 33 AND 5=15 = 1,Yihuo 的满意度值 \-(4\-(4 XOR 6)=26) = -2,总和为 \-1\-1
  • 对于第二个查询,l2=(2+1)l_2 = (2 + |-1|) MOD 7+1=47 + 1 = 4r2=(5+1)r_2 = (5 + |-1|) MOD 7+1=77 + 1 = 7。数组 4,6,3,14, 6, 3, 1 将被分为 4,64, 63,13, 1,这提供给 Yu 的满意度值 44 AND 6=46 = 4 和 Yihuo 的满意度值 \-(3\-(3 XOR 1)=21) = -2,总和为 22
  • 对于第三个查询,l3=(3+2)l_3 = (3 + |2|) MOD 7+1=67 + 1 = 6r3=(4+2)r_3 = (4 + |2|) MOD 7+1=77 + 1 = 7。数组 3,13, 1 只能分为 3311,这提供给 Yu 的满意度值 33 和 Yihuo 的满意度值 1-1,总和为 22
  • 对于第四个查询,l4=(5+2)l_4 = (5 + |2|) MOD 7+1=17 + 1 = 1r4=(1+2)r_4 = (1 + |2|) MOD 7+1=47 + 1 = 4。数组 7,3,5,47, 3, 5, 4 将被分为 773,5,43, 5, 4,这提供给 Yu 的满意度值 77 和 Yihuo 的满意度值 \-(3\-(3 XOR 55 XOR 4)=24) = -2,总和为 55

输入示例 2


20 30
1 4 3 6 9 9 6 7 5 3 5 4 9 4 1 2 14 5 11 1
14 18
4 15
2 10
3 13
20 15
7 12
18 10
9 15
20 12
5 7
6 10
8 12