函数求和
题号:NC200545
时间限制:C/C++/Rust/Pascal 4秒,其他语言8秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

给出一个序列  。
定义  
需要回答 q 个询问,每次询问给出一个区间  , 求 

输入描述:

第一行两个整数 n,q ,表示序列长度和询问次数。
第二行 n 个整数,第 i 个数表示 a_i 。
接下来 q 行,每行两个整数 l, r ,表示询问的区间端点。
每次输入的 l,r 需要异或上 lastans ,lastans 表示上一个询问取模后的答案,最初 lastans = 0 。
保证  ,异或后  。

输出描述:

对于每个询问,输出一行一个整数,表示  。
示例1

输入

复制
5 2
0 1 2 3 4 
2 3
2 7

输出

复制
3
12

说明

第二次询问输入 2 7 ,实际询问区间为 [1,4]