菠萝蜜多斩
时间限制:C/C++/Rust/Pascal 4秒,其他语言8秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld

题目描述

这天,菠萝吹雪在天山的神阶上练习菠萝蜜多斩,神阶的的台阶有 n 块,从下到上按 1 到 n 来编号,每一块台阶都有一个武力值,用 w 表示,菠萝吹雪将施展若干次菠萝蜜多斩,每一次的菠萝蜜多斩会波及一个连续区间 [l,r],菠萝吹雪观察到有些台阶的武力值相同,所以将一次菠萝蜜多斩的威力值定义为:[l,r] 区间内的台阶上出现偶数次的武力值的异或和,你能帮他算出这个威力值吗?

输入描述:

第一行输入两个正整数 n,m,分别表示台阶数和施展菠萝蜜多斩的次数。

第二行输入 n 个正整数,表示这 n 块台阶所对应的武力值。

接下来 m 次询问,每次给两个整数 l 和 r,表示这一次菠萝蜜多斩的波及范围。

保证:n,m <= 1000000,1 <= l <= r <= n,w <= 230

输出描述:

对每个询问输出一个答案。
示例1

输入

复制
5 3
1 1 2 34 5
1 2
1 1
2 5

输出

复制
1
0
0