#114. k 大异或和

内存限制:256 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: 匿名

题目描述

这是一道模板题。

给由 n n n 个数组成的一个可重集 S S S,每次给定一个数 k k k,求一个集合 T⊆S T \subseteq S TS,使得集合 T T TS S S 的所有非空子集的不同的异或和中,其异或和 T1xorT2xorxorT|T| 是第 k k k 小的。

输入格式

第一行一个数 n n n
第二行 n n n 个数,表示集合 S S S
第三行一个数 m m m,表示询问次数。
第四行 m m m 个数,表示每一次询问的 k k k

输出格式

输出 m m m 行,对应每一次询问的答案,第 k k k 小的异或和。如果集合 S S S 的所有非空子集中,不同的异或和数量不足 k k k,输出 −1 -1 1

样例

样例输入

3
1 2 3
5
1 2 3 4 5

样例输出

0
1
2
3
-1

数据范围与提示

1≤n,m≤105,0≤Si≤250 1 \leq n, m \leq 10 ^ 5, 0 \leq S_i \leq 2 ^ {50} 1n,m105,0Si250