wyh2000 and sequence

Accepts: 1
Submissions: 87
Time Limit: 6000/3000 MS (Java/Others)
Memory Limit: 262144/131072 K (Java/Others)
问题描述
青年理论计算机科学家wyh2000在潜心研究数据结构。
为了展现自己的聪明才智,他给他的学生出了一道大难题。
给定一个序列$A$,每次询问给定两个数$l,r$,假设区间$[l,r]$去重后有$k$个数$c_1,c_2,\ldots,c_k$,其中$c_i$在区间$[l,r]$出现了$b_i$次,你要求出$\sum_{i=1}^{k}c_i^{b_i}$对$10^9+7$取模的结果,并且强制在线。
为了让wyh2000的学生不再受到wyh2000的精神折磨,请你来帮他们作答。
输入描述
第一行一个数$T$,表示数据组数。
对于每组数据,第一行两个数$n,q$,表示序列长度和询问次数。
第二行有$n$个数,表示$A_1,A_2,\ldots,A_n$。
接下来$q$行,每行两个数$a,b$。
那么真正询问的区间$[l,r]$为$l=\min((a \oplus la)\%n+1,(b \oplus la)\%n+1),r=\max((a \oplus la)\%n+1,(b \oplus la)\%n+1)$
其中$ \oplus $表示异或,$la$表示上一次询问的答案,每组数据开始前$la=0$。
$T\leq5,1\leq A_i,a,b\leq10^9$
对于第$i$组数据,$1\le n,q\leq i\times10000$
输出描述
对于每组询问,输出一行一个数表示答案。
输入样例
2
5 3
2 1 2 3 1
10 14
9 8
8 7
5 2
2 3 3 2 2
7 4
3 6
输出样例
8
3
6
7
13
Hint
对于第一组数据,真正询问的区间为$[1,5],[1,2],[2,5]$;
对于第二组数据,真正询问的区间为$[3,5],[2,5]$。
Hack数据每一行都不能以空格结尾。