3129: 异或延展

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:6 解决:2

题目描述

给定一个长度为 �k 的数列 �1,�2,⋯,��x1,x2,⋯,xk 作为一个起始值,然后从第 �+1k+1 项开始,无限地延展这个序列,延展后数列 ��xi 的定义如下:

��=��−1⊕��−2⊕⋯⊕��−�xi=xi−1⊕xi−2⊕⋯⊕xi−k

这其中 ⊕⊕ 是将两个数字二进制编码后进行异或操作的意思。

给定 �q 个询问,每个询问都带有一组参数 �,�l,r,请计算并输出

��⊕��+1⊕⋯⊕��xl⊕xl+1⊕⋯⊕xr

的值。

输入

第一行:单个整数表示 �k;
第二行:�k 个整数表示 �1,�2,⋯,��x1,x2,⋯,xk;
第三行:单个整数表示 �q;
第四行到第 �+3q+3 行:每行两个整数 ��li 与 ��ri,表示对一个区间的询问。


  • 0≤xi≤109;
  • 记查询参数 ��li 与 ��ri 的最大值为 �n。
  • 对于 30%30% 的分数,�≤100k≤100,�≤1000n≤1000,�≤1000q≤1000;
  • 对于 60%60% 的分数,�≤105n≤105;
  • 对于 100%100% 的分数,�≤105k≤105,�≤109n≤109,�≤105q≤105。


输出

共 �q 行:对每个询问,输出一个整数表示答案。

样例输入 复制

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

样例输出 复制

3
1
0

提示

注意:
1. 第K+1项的值为前k项的异或和
2. 以此类推
3. 小发现:长度为k+1的异或和为0