#CF2147E. 最大或 Popcount

最大或 Popcount

E. 最大或 Popcount

每次测试时间限制: 22
每次测试内存限制: 256256 兆字节

你有一个由 nn非负整数组成的数组。

你需要回答 qq 个独立的询问。在第 ii 个询问中,你最多可以执行 bib_i 次操作:

  • 选择数组中的一个元素,将其增加 11

你的目标是最大化整个数组按位或(bitwise OR)结果中二进制表示中 11 的个数
对每个询问,输出这个最大值。


输入

每个测试点包含多个测试用例。
第一行包含一个整数 tt1t1031 \le t \le 10^3),表示测试用例的数量。

每个测试用例:

  • 第一行包含两个整数 nnqq1n,q1051 \le n, q \le 10^5)——数组大小和询问数量。
  • 第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n0ai1090 \le a_i \le 10^9)。
  • 接下来 qq 行,每行一个整数 bib_i0bi1090 \le b_i \le 10^9),表示该询问允许的最大操作次数。

保证所有测试用例的 nn 之和不超过 10510^5,所有测试用例的 qq 之和不超过 10510^5


输出

对于每个测试用例,输出 qq 行,第 ii 行包含一个整数——在第 ii 个询问中,通过最多 bib_i 次加 11 操作后,能得到的按位或结果中二进制 11 的最大个数


示例

输入:

3
1 3
0
0
2
4
2 2
1 3
0
3
2 1
1000000000 1000000000
1000000000

输出:

0
1
2
2
3
31

注释

第一个测试用例n=1,a=[0]n=1, a=[0]):

  • 询问 11b=0b=0,不能操作,按位或为 00,二进制 11 的个数 = 00
  • 询问 22b=2b=2,可以加 11 两次:0120 \to 1 \to 2,按位或为 2=(10)22 = (10)_2,有 1111
  • 询问 33b=4b=4,加 11 三次:01230 \to 1 \to 2 \to 3,按位或为 3=(11)23 = (11)_2,有 2211

第二个测试用例n=2,a=[1,3]n=2, a=[1,3]):

  • 询问 11b=0b=0,原数组按位或 13=3=(11)21 | 3 = 3 = (11)_2,有 2211
  • 询问 22b=3b=3,可以对 a2=3a_2=311 三次:34563 \to 4 \to 5 \to 6,此时 a=[1,6]a=[1,6],按位或 16=7=(111)21|6=7=(111)_2,有 3311

第三个测试用例n=2,a=[109,109]n=2, a=[10^9,10^9]):

  • 询问 11b=109b=10^9,可以将其中一个 10910^9 加到 2×1092\times10^9 附近,最优结果是 313111(因为 23112^{31}-12.147×1092.147\times10^9,在 10910^9 次操作内可达)。