#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
if (!(cin >> T)) return 0;
while (T--) {
int n, q;
cin >> n >> q;
vector<long long> a(n);
for (auto &x : a) cin >> x;
sort(a.begin(), a.end(), greater<long long>()); // dùng lại cho mọi query
while (q--) {
long long c;
cin >> c;
// con trỏ vào a và heap cho phần dư trong query này
int p = 0;
priority_queue<long long> rem; // các phần "dung lượng còn lại"
long long ans = 0;
for (int k = 29; k >= 0; --k) if ( (c >> k) & 1LL ) {
long long best = 0;
// lấy max giữa a[p] và rem.top()
if (p < n) best = a[p];
if (!rem.empty()) best = max(best, rem.top());
// tiến con trỏ/heap tương ứng
if (!rem.empty() && best == rem.top()) rem.pop();
else if (p < n && best == a[p]) ++p;
else best = 0; // cả hai trống
long long need = 1LL << k;
if (best >= need) {
long long leftover = best - need;
if (leftover > 0) rem.push(leftover);
} else {
ans += need - best;
// leftover = 0, không đẩy lại
}
}
cout << ans << "\n";
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICBpbnQgVDsgCiAgICBpZiAoIShjaW4gPj4gVCkpIHJldHVybiAwOwogICAgd2hpbGUgKFQtLSkgewogICAgICAgIGludCBuLCBxOyAKICAgICAgICBjaW4gPj4gbiA+PiBxOwogICAgICAgIHZlY3Rvcjxsb25nIGxvbmc+IGEobik7CiAgICAgICAgZm9yIChhdXRvICZ4IDogYSkgY2luID4+IHg7CiAgICAgICAgc29ydChhLmJlZ2luKCksIGEuZW5kKCksIGdyZWF0ZXI8bG9uZyBsb25nPigpKTsgLy8gZMO5bmcgbOG6oWkgY2hvIG3hu41pIHF1ZXJ5CgogICAgICAgIHdoaWxlIChxLS0pIHsKICAgICAgICAgICAgbG9uZyBsb25nIGM7IAogICAgICAgICAgICBjaW4gPj4gYzsKCiAgICAgICAgICAgIC8vIGNvbiB0cuG7jyB2w6BvIGEgdsOgIGhlYXAgY2hvIHBo4bqnbiBkxrAgdHJvbmcgcXVlcnkgbsOgeQogICAgICAgICAgICBpbnQgcCA9IDA7CiAgICAgICAgICAgIHByaW9yaXR5X3F1ZXVlPGxvbmcgbG9uZz4gcmVtOyAvLyBjw6FjIHBo4bqnbiAiZHVuZyBsxrDhu6NuZyBjw7JuIGzhuqFpIgoKICAgICAgICAgICAgbG9uZyBsb25nIGFucyA9IDA7CiAgICAgICAgICAgIGZvciAoaW50IGsgPSAyOTsgayA+PSAwOyAtLWspIGlmICggKGMgPj4gaykgJiAxTEwgKSB7CiAgICAgICAgICAgICAgICBsb25nIGxvbmcgYmVzdCA9IDA7CgogICAgICAgICAgICAgICAgLy8gbOG6pXkgbWF4IGdp4buvYSBhW3BdIHbDoCByZW0udG9wKCkKICAgICAgICAgICAgICAgIGlmIChwIDwgbikgYmVzdCA9IGFbcF07CiAgICAgICAgICAgICAgICBpZiAoIXJlbS5lbXB0eSgpKSBiZXN0ID0gbWF4KGJlc3QsIHJlbS50b3AoKSk7CgogICAgICAgICAgICAgICAgLy8gdGnhur9uIGNvbiB0cuG7jy9oZWFwIHTGsMahbmcg4bupbmcKICAgICAgICAgICAgICAgIGlmICghcmVtLmVtcHR5KCkgJiYgYmVzdCA9PSByZW0udG9wKCkpIHJlbS5wb3AoKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKHAgPCBuICYmIGJlc3QgPT0gYVtwXSkgKytwOwogICAgICAgICAgICAgICAgZWxzZSBiZXN0ID0gMDsgLy8gY+G6oyBoYWkgdHLhu5FuZwoKICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBuZWVkID0gMUxMIDw8IGs7CiAgICAgICAgICAgICAgICBpZiAoYmVzdCA+PSBuZWVkKSB7CiAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxlZnRvdmVyID0gYmVzdCAtIG5lZWQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKGxlZnRvdmVyID4gMCkgcmVtLnB1c2gobGVmdG92ZXIpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBhbnMgKz0gbmVlZCAtIGJlc3Q7CiAgICAgICAgICAgICAgICAgICAgLy8gbGVmdG92ZXIgPSAwLCBraMO0bmcgxJHhuql5IGzhuqFpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY291dCA8PCBhbnMgPDwgIlxuIjsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQo=