Problem4610--异或运算

4610: 异或运算

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MiB

Description

给定你由 N 个整数构成的整数序列,你可以从中选取一些(甚至一个)进行异或(XOR)运算,从而得到很多不同的结果。
请问,所有能得到的不同的结果中第k小的结果是多少。

Input

第一行包含整数 T,表示共有 T 组测试数据。
对于每组测试数据,第一行包含整数 N。
第二行包含 N 个整数(均在 $1 \sim 10^{18}$ 之间),表示完整的整数序列。
第三行包含整数 Q,表示询问的次数。
第四行包含 Q 个整数 $k_1,k_2,…,k_Q$,表示 Q 个询问对应的 k。

Output

对于每组测试数据,第一行输出“Case #C:”,其中C为顺序编号(从1开始)。
接下来Q行描述Q次询问的结果,每行输出一个整数,表示第 i 次询问中第 $k_i$ 小的结果。
如果能得到的不同结果的总数少于 $k_i$,则输出“-1”。

Constraints

$1≤N,Q≤10000$
$1≤k_i≤10^{18}$

Sample 1 Input

2
2
1 2
4
1 2 3 4
3
1 2 3
5
1 2 3 4 5

Sample 1 Output

Case #1:
1
2
3
-1
Case #2:
0
1
2
3
-1

Source/Category