3129: 异或延展

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

题目描述

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

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

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

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

��⊕��+1⊕⋯⊕��xlxl+1xr

的值。

输入

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


  • 0xi109
  • 记查询参数 ��li 与 ��ri 的最大值为 n
  • 对于 30%30% 的分数,�≤100k100�≤1000n1000�≤1000q1000
  • 对于 60%60% 的分数,�≤105n105
  • 对于 100%100% 的分数,�≤105k105�≤109n109�≤105q105


输出

共 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