#121. 异或运算

异或运算

题目描述

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

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

输入格式

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

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

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

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

第四行包含 Q\red Q 个整数 k1,k2,,kQ\red{k_1 ,k_2,…,k_Q} ,表示 Q\red Q 个询问对应的 k\red k

输出格式

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

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

如果能得到的不同结果的总数少于 ki\red{k_i},则输出"1\red{-1}"。

样例

输入样例

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

提示

1N,Q10000\red{1\leq N,Q\leq 10000},

1ki1018\red{1\leq k_i\leq 10^{18}}