#include <bits/stdc++.h>
using namespace std;
int64_t slv(int64_t x) {
if(x < 5) return 0;
x -= 5;
static int c[] = {0, -1, 0};
return x / 3 + 1 + c[x % 3];
}
const int N = 1e7 + 1, EN = 664579;
int pc, prm[EN];
int spf[N];
auto pre_Sieve = []() {
for (int i = 2; i < N; i++) {
if (!spf[i]) spf[i] = prm[pc++] = i;
for (int j = 0; i * prm[j] < N; j++) {
spf[i * prm[j]] = prm[j];
if (spf[i] == prm[j]) break;
}
}
return 0;
}();
void TC() {
int n;
int64_t x;
cin >> n >> x;
int ans = 0;
for(int i = 0, y; i < n; i++) {
cin >> y;
if(x < 4) {
ans += y <= x;
if (x < y) x -= y;
continue;
}
int64_t limit = x / 2;
if(y <= x) {
ans++;
int best = y / 2 + 1;
if(y < limit) {
x += y;
}
else if(best <= limit)
x += y % best;
else
x += slv(y);
}
else {
x -= spf[y] > limit;
}
}
cout << ans << '\n';
}
int32_t main() {
ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
int tc = 1;
cin >> tc;
for (int test = 1; test <= tc; ++test) {
TC();
}
// cerr << clock() / 1000.0 << " Secs";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQ2NF90IHNsdihpbnQ2NF90IHgpIHsKICAgIGlmKHggPCA1KSByZXR1cm4gMDsKICAgIHggLT0gNTsKICAgIHN0YXRpYyBpbnQgY1tdID0gezAsIC0xLCAwfTsKICAgIHJldHVybiB4IC8gMyArIDEgKyBjW3ggJSAzXTsKfQoKY29uc3QgaW50IE4gPSAxZTcgKyAxLCBFTiA9IDY2NDU3OTsKaW50IHBjLCBwcm1bRU5dOwppbnQgc3BmW05dOwoKYXV0byBwcmVfU2lldmUgPSBbXSgpIHsKICAgIGZvciAoaW50IGkgPSAyOyBpIDwgTjsgaSsrKSB7CiAgICAgICAgaWYgKCFzcGZbaV0pIHNwZltpXSA9IHBybVtwYysrXSA9IGk7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGkgKiBwcm1bal0gPCBOOyBqKyspIHsKICAgICAgICAgICAgc3BmW2kgKiBwcm1bal1dID0gcHJtW2pdOwogICAgICAgICAgICBpZiAoc3BmW2ldID09IHBybVtqXSkgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0oKTsKCnZvaWQgVEMoKSB7CiAgICBpbnQgbjsKICAgIGludDY0X3QgeDsKICAgIGNpbiA+PiBuID4+IHg7CiAgICBpbnQgYW5zID0gMDsKICAgIGZvcihpbnQgaSA9IDAsIHk7IGkgPCBuOyBpKyspIHsKICAgICAgICBjaW4gPj4geTsKICAgICAgICBpZih4IDwgNCkgewogICAgICAgICAgICBhbnMgKz0geSA8PSB4OwogICAgICAgICAgICBpZiAoeCA8IHkpIHggLT0geTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGludDY0X3QgbGltaXQgPSB4IC8gMjsKICAgICAgICBpZih5IDw9IHgpIHsKICAgICAgICAgICAgYW5zKys7CiAgICAgICAgICAgIGludCBiZXN0ID0geSAvIDIgKyAxOwogICAgICAgICAgICBpZih5IDwgbGltaXQpIHsKICAgICAgICAgICAgICAgIHggKz0geTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKGJlc3QgPD0gbGltaXQpCiAgICAgICAgICAgICAgICB4ICs9IHkgJSBiZXN0OwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB4ICs9IHNsdih5KTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHggLT0gc3BmW3ldID4gbGltaXQ7CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBhbnMgPDwgJ1xuJzsKfQoKaW50MzJfdCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpLCBjaW4udGllKG51bGxwdHIpLCBjb3V0LnRpZShudWxscHRyKTsKICAgIGludCB0YyA9IDE7CiAgICBjaW4gPj4gdGM7CiAgICBmb3IgKGludCB0ZXN0ID0gMTsgdGVzdCA8PSB0YzsgKyt0ZXN0KSB7CiAgICAgICAgVEMoKTsKICAgIH0KICAgIC8vICAgIGNlcnIgPDwgY2xvY2soKSAvIDEwMDAuMCA8PCAiIFNlY3MiOwogICAgcmV0dXJuIDA7Cn0=