#include <bits/stdc++.h>
using namespace std;

#define all(x) ::begin(x), ::end(x)
#define tsolve int t; cin >> t; while (t--) solve
#define sz(x) (int)::size(x)
using ll = long long;
using ld = long double;

void solve() {
    int n, k;
    cin >> n >> k;
    vector<int> a(n);
    for (int& e : a) cin >> e;
    sort(all(a));

    auto check = [&](int r) {
        int ptr = r-1;
        int cnt = 0;
        for (int i=0; i<r; i++) {
            while (ptr > i && a[i] + a[ptr] >= k) ptr--;
            if (ptr <= i) break;
            cnt++;
            ptr--;
        }
        return r - cnt;
    };

    int l = -1, r = 0;
    while (r < n && a[r] < k) r++;
    while (l+1 < r) {
        int m = (l+r) / 2;
        if (check(m) >= n-m) r = m;
        else l = m;
    }

    int ans = max(check(r), n-r) - 1;
    cout << ans << '\n';
}

int main() {
    cout.tie(0)->sync_with_stdio(false);
    cout << setprecision(16);
    tsolve();
}