210. 异或运算

给定你由 $N$ 个整数构成的整数序列,你可以从中选取一些(至少一个)进行异或($XOR$)运算,从而得到很多不同的结果。

请问,所有能得到的不同的结果中第 $k$ 小的结果是多少。

输入格式

第一行包含整数 $T$,表示共有 $T$ 组测试数据。

对于每组测试数据,第一行包含整数 $N$。

第二行包含 $N$ 个整数(均在 $1$ 至 $10^{18}$ 之间),表示完整的整数序列。

第三行包含整数 $Q$,表示询问的次数。

第四行包含 $Q$ 个整数 $k_1,k_2,…,k_Q$,表示 $Q$ 个询问对应的 $k$。

输出格式

对于每组测试数据,第一行输出 Case #C:,其中 $C$ 为顺序编号(从 $1$ 开始)。

接下来 $Q$ 行描述 $Q$ 次询问的结果,每行输出一个整数,表示第 $i$ 次询问中第 $k_i$ 小的结果。

如果能得到的不同结果的总数少于 $k_i$,则输出 $-1$。

数据范围

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

输入样例:

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

输出样例:

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

注意:只选取一个数字进行运算,则结果为该数字本身。