#1162. 异或

内存限制:512 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: nocriz🦆

题目描述

异或运算拥有许多美妙的性质。为了更好的理解异或运算,你需要做如下的一个实验:

有一个 nn 个元素的数列 aa,要进行 mm 次查询,每次查询形式如下:

  1. 给出两个整数 ll, rr ,表示查询区间的左右端点.

  2. 取出区间 [l,r][l, r] 中的所有出现过且出现了偶数次的整数。比如 1, 2, 1, 2, 1 ,则会取出一个数 2.

  3. 将取出来的数全部异或起来,并将该异或值作为本次查询的答案。形式化来说,设取出的数为 x1,x2,...,xnx_1,x_2,...,x_n,则计算 x1x2...xnx_1\oplus x_2 \oplus ... \oplus x_n , 其中 \oplus 表示异或运算.

输入格式

第一行一个整数 nn,表示数列的长度.

接下来一行 nn 个非负整数,表示 aa 数组中的每个元素.

接下来一行一个整数 mm,表示查询的数量.

接下来 mm 行,每行两个整数 l,rl, r, 表示这次查询区间的左右端点.

输出格式

对于每组查询,输出一行一个整数,表示这组查询的答案.

样例

样例输入

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

样例输出

0
3
1
3
2

数据范围与提示

0<n,m3000000<n,m ≤ 300000

0ai10000000000 ≤ a_i ≤ 1000000000

1lrn1 ≤ l ≤ r ≤ n