#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
void solve() {
ll n, c;
cin >> n >> c;
// Use vector instead of VLA to prevent stack overflow
vector<ll> b(n + 1, 0);
ll sum = 0;
for (ll i = 1; i <= n; i++) {
cin >> b[i];
sum += b[i];
}
// Sort from index 2 to n
sort(b.begin() + 2, b.end());
ll answer = 0;
// Precompute prefix sums for the sorted region to achieve O(1) range queries
vector<ll> pref(n + 1, 0);
for (ll i = 2; i <= n; i++) {
pref[i] = pref[i - 1] + b[i];
}
// Single loop: O(N) instead of O(N^2)
for (ll do_it = 1; do_it <= n - 1; do_it++) {
// 1. Sum of the smallest 'do_it' elements starting from index 2
ll sum_low = pref[1 + do_it];
ll u1 = (sum - sum_low) * sum_low;
// 2. Sum of the largest 'do_it' elements ending at index n
ll sum_high = pref[n] - pref[n - do_it];
u1 = min(u1, (sum - sum_high) * sum_high);
if (u1 <= c) {
answer = do_it;
}
}
cout << n - answer << "\n";
}
int main() {
// Fast I/O optimization
ios_base::sync_with_stdio(false);
cin.tie(NULL);
ll t;
cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgbGw7Cgp2b2lkIHNvbHZlKCkgewogICAgbGwgbiwgYzsKICAgIGNpbiA+PiBuID4+IGM7CiAgICAKICAgIC8vIFVzZSB2ZWN0b3IgaW5zdGVhZCBvZiBWTEEgdG8gcHJldmVudCBzdGFjayBvdmVyZmxvdwogICAgdmVjdG9yPGxsPiBiKG4gKyAxLCAwKTsKICAgIGxsIHN1bSA9IDA7CiAgICAKICAgIGZvciAobGwgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgY2luID4+IGJbaV07CiAgICAgICAgc3VtICs9IGJbaV07CiAgICB9CiAgICAKICAgIC8vIFNvcnQgZnJvbSBpbmRleCAyIHRvIG4KICAgIHNvcnQoYi5iZWdpbigpICsgMiwgYi5lbmQoKSk7CiAgICAKICAgIGxsIGFuc3dlciA9IDA7CiAgICAKICAgIC8vIFByZWNvbXB1dGUgcHJlZml4IHN1bXMgZm9yIHRoZSBzb3J0ZWQgcmVnaW9uIHRvIGFjaGlldmUgTygxKSByYW5nZSBxdWVyaWVzCiAgICB2ZWN0b3I8bGw+IHByZWYobiArIDEsIDApOwogICAgZm9yIChsbCBpID0gMjsgaSA8PSBuOyBpKyspIHsKICAgICAgICBwcmVmW2ldID0gcHJlZltpIC0gMV0gKyBiW2ldOwogICAgfQogICAgCiAgICAvLyBTaW5nbGUgbG9vcDogTyhOKSBpbnN0ZWFkIG9mIE8oTl4yKQogICAgZm9yIChsbCBkb19pdCA9IDE7IGRvX2l0IDw9IG4gLSAxOyBkb19pdCsrKSB7CiAgICAgICAgLy8gMS4gU3VtIG9mIHRoZSBzbWFsbGVzdCAnZG9faXQnIGVsZW1lbnRzIHN0YXJ0aW5nIGZyb20gaW5kZXggMgogICAgICAgIGxsIHN1bV9sb3cgPSBwcmVmWzEgKyBkb19pdF07IAogICAgICAgIGxsIHUxID0gKHN1bSAtIHN1bV9sb3cpICogc3VtX2xvdzsKICAgICAgICAKICAgICAgICAvLyAyLiBTdW0gb2YgdGhlIGxhcmdlc3QgJ2RvX2l0JyBlbGVtZW50cyBlbmRpbmcgYXQgaW5kZXggbgogICAgICAgIGxsIHN1bV9oaWdoID0gcHJlZltuXSAtIHByZWZbbiAtIGRvX2l0XTsKICAgICAgICB1MSA9IG1pbih1MSwgKHN1bSAtIHN1bV9oaWdoKSAqIHN1bV9oaWdoKTsKICAgICAgICAKICAgICAgICBpZiAodTEgPD0gYykgewogICAgICAgICAgICBhbnN3ZXIgPSBkb19pdDsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGNvdXQgPDwgbiAtIGFuc3dlciA8PCAiXG4iOwp9CgppbnQgbWFpbigpIHsKICAgIC8vIEZhc3QgSS9PIG9wdGltaXphdGlvbgogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgCiAgICBsbCB0OwogICAgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgc29sdmUoKTsKICAgIH0KICAgIHJldHVybiAwOwp9