#include <bits/stdc++.h>
using namespace std;
// Speed up I/O
#define fast_io ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
// Typedefs
#define int long long
#define endl '\n'
// Constants
const int N = 35;
const int INF = 1e18;
// Array to store trash weights
int a[N];
void solve() {
int n, c;
cin >> n >> c;
for (int i = 0; i < n; ++i)
cin >> a[i];
sort(a, a + n); // Sort the trash bags by weight
bool destroyed[N] = {0}; // Keep track of destroyed bags
int remaining = n;
int coins = 0;
while (true) {
int idx = -1;
// Find the heaviest bag ≤ c that is not destroyed
for (int i = n - 1; i >= 0; --i) {
if (!destroyed[i] && a[i] <= c) {
idx = i;
break;
}
}
// If no destroyable bag is found, break
if (idx == -1) break;
destroyed[idx] = true;
remaining--;
// Double all remaining trash bags
for (int i = 0; i < n; ++i) {
if (!destroyed[i]) {
if (a[i] <= INF / 2) a[i] *= 2;
else a[i] = INF; // Prevent overflow
}
}
}
// Count coins for bags still heavier than c
for (int i = 0; i < n; ++i) {
if (!destroyed[i] && a[i] > c)
coins++;
}
cout << coins << endl;
}
int32_t main() {
fast_io;
int t;
cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyBTcGVlZCB1cCBJL08KI2RlZmluZSBmYXN0X2lvIGlvczo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKQoKLy8gVHlwZWRlZnMKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZW5kbCAnXG4nCgovLyBDb25zdGFudHMKY29uc3QgaW50IE4gPSAzNTsKY29uc3QgaW50IElORiA9IDFlMTg7CgovLyBBcnJheSB0byBzdG9yZSB0cmFzaCB3ZWlnaHRzCmludCBhW05dOwoKdm9pZCBzb2x2ZSgpIHsKICAgIGludCBuLCBjOwogICAgY2luID4+IG4gPj4gYzsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkKICAgICAgICBjaW4gPj4gYVtpXTsKCiAgICBzb3J0KGEsIGEgKyBuKTsgIC8vIFNvcnQgdGhlIHRyYXNoIGJhZ3MgYnkgd2VpZ2h0CgogICAgYm9vbCBkZXN0cm95ZWRbTl0gPSB7MH07ICAvLyBLZWVwIHRyYWNrIG9mIGRlc3Ryb3llZCBiYWdzCiAgICBpbnQgcmVtYWluaW5nID0gbjsKICAgIGludCBjb2lucyA9IDA7CgogICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBpbnQgaWR4ID0gLTE7CgogICAgICAgIC8vIEZpbmQgdGhlIGhlYXZpZXN0IGJhZyDiiaQgYyB0aGF0IGlzIG5vdCBkZXN0cm95ZWQKICAgICAgICBmb3IgKGludCBpID0gbiAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgICAgIGlmICghZGVzdHJveWVkW2ldICYmIGFbaV0gPD0gYykgewogICAgICAgICAgICAgICAgaWR4ID0gaTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBJZiBubyBkZXN0cm95YWJsZSBiYWcgaXMgZm91bmQsIGJyZWFrCiAgICAgICAgaWYgKGlkeCA9PSAtMSkgYnJlYWs7CgogICAgICAgIGRlc3Ryb3llZFtpZHhdID0gdHJ1ZTsKICAgICAgICByZW1haW5pbmctLTsKCiAgICAgICAgLy8gRG91YmxlIGFsbCByZW1haW5pbmcgdHJhc2ggYmFncwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgICAgIGlmICghZGVzdHJveWVkW2ldKSB7CiAgICAgICAgICAgICAgICBpZiAoYVtpXSA8PSBJTkYgLyAyKSBhW2ldICo9IDI7CiAgICAgICAgICAgICAgICBlbHNlIGFbaV0gPSBJTkY7IC8vIFByZXZlbnQgb3ZlcmZsb3cKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvLyBDb3VudCBjb2lucyBmb3IgYmFncyBzdGlsbCBoZWF2aWVyIHRoYW4gYwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICBpZiAoIWRlc3Ryb3llZFtpXSAmJiBhW2ldID4gYykKICAgICAgICAgICAgY29pbnMrKzsKICAgIH0KCiAgICBjb3V0IDw8IGNvaW5zIDw8IGVuZGw7Cn0KCmludDMyX3QgbWFpbigpIHsKICAgIGZhc3RfaW87CgogICAgaW50IHQ7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==
NAo1IDEwCjEwIDQgMTUgMSA4CjMgNDIKMTAwMDAwMDAwMCAxMDAwMDAwMDAwIDEwMDAwMDAwMDAKMTAgMzAKMjkgMjUgMiAxMiAxNSA0MiAxNCA2IDE2IDkKMTAgMTAwMDAwMAoxIDEgMSAxIDEgMSAxIDEgMSA4NjQwMjY2MzMK
4
5 10
10 4 15 1 8
3 42
1000000000 1000000000 1000000000
10 30
29 25 2 12 15 42 14 6 16 9
10 1000000
1 1 1 1 1 1 1 1 1 864026633