另类排序
时间限制:C/C++/Rust/Pascal 5秒,其他语言10秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

现有 n 个数,每个数有权值 A_i ; m 次询问,每次询问 的值,其中 B_i 为区间中第v小的数的值。比如说区间内的数为,那么其贡献为

出题人觉得题目过于简单,他加上了一些小修改,每次询问区间由输入区间转换,



其中lastans为上次询问的输出结果,lastans初始为0,为整数的XOR操作。注意,区间最终只取有效区域,即的交集。比如的区间最终有效区间为的区间有效区间为空,为空的区间值自然为0。

输入描述:

第一行一个整数 T 表示数据组数。

接下来每组数据,第一行一个整数 n
接下来一行 n 个整数 A_i

接下来一行一个整数 m
接下来 m 行每行两个整数 l',r'

输出描述:

每个输出一行,表示答案。
示例1

输入

复制
1
6
3 4 1 2 5 6
3
1 5 
2 4
3 6

输出

复制
6
3
6

说明

1\leq T\leq 1000 
n,m\leq 10^4
\sum n\leq 4\cdot 10^4
\sum m\leq 4\cdot 10^4
1\leq l'\leq r'\leq n
1\leq A_i\leq 10^9