编程题
### 问题描述
最近蓝桥A梦喜欢上了位运算,特别是沉迷于其中的异或运算。
异或运算的特殊之处在于,进行异或运算的两个数 $a$ 和 $b$ ,对于它们在二进制下的同一位,只有两边数不相同,运算的结果才为 $1$ ,如果相同,则为 $0$ ,比如 $1$ 和 $3$ 进行运算,它们转化成二进制后,分别是 $01$ 和 $11$ ,那么它们的异或运算结果就是 $10$ ,转化成十进制数后就是 $2$ 。
异或运算实在是太有趣了,他这些天一直都在进行异或运算,蓝桥美怕他走火入魔了,打算给蓝桥A梦出个难题打击一下他的兴趣。
蓝桥美给了蓝桥A梦 $n$ 个正整数 $a_i$ ,然后进行 $m$ 次询问,每次询问第 $l$ 个数到第 $r$ 个数之间,所有出现次数为奇数的数的异或和是多少。(对于三个数 $a、b、c$ ,它们的异或和就是 $a\oplus b\oplus c$ , $\oplus $ 是异或符号)
这种问题怎么能难得倒蓝桥A梦呢?他并不想回答这么简单的问题,所以他把问题扔给了你,你能回答蓝桥美的疑问吗?
### 输入格式
第一行包含 $2$ 个正整数 $n$ 和 $m$ $(1\leq n,m \leq 1\times 10^5)$,表示数组的长度和询问的次数。
第二行包含 $n$ 个正整数 $a_i$ $(1\leq a_i \leq 10^5)$ ,$a_i$ 表示第 $i$ 个位置上的数字是 $a_i$ 。
接下来 $m$ 行,每行包含 $2$ 个正整数 $l$ 和 $r$ $(1\leq l,r \leq n)$ ,表示当前询问的区间。
### 输出格式
对于每一行询问,输出 $1$ 个整数,为当前询问区间 $[l,r]$ 的出现次数为奇数的数的异或和。
### 样例输入
```text
6 3
2 4 5 4 7 7
1 3
1 4
5 6
```
### 样例输出
```text
3
7
0
```
### 说明
**样例说明**
第一次询问 $[1,3]$ ,有 $3$ 个出现次数为奇数的数: $2、4、5$ ,异或和为 $2\oplus 4\oplus 5 = 3$ 。
第二次询问 $[1,4]$ ,有 $2$ 个出现次数为奇数的数: $2、5$ ,异或和为 $2\oplus 5 = 7$ 。
第三次询问 $[5,6]$ ,有 $0$ 个出现次数为奇数的数,异或和为 $0$ 。
**提示**
注意,因为本题输入输出数据较大,所以要用快一些的输入输出方式,比如 $scanf$ 和 $printf$ 。如果想使用 $cin$ 和 $cout$ ,需要关闭流同步。
以及换行不能使用 $endl$ 作为换行符,要用 $"\setminus n"$ 。