#include <algorithm> #include <iostream> #include <vector> void solve() { int n, k; std::cin >> n >> k; std::vector<int> a(n); for (int i = 0; i < n; ++i) { std::cin >> a[i]; } std::sort(a.begin(), a.end()); std::vector<bool> used(n, false); int pairs = 0; for (int l = 0, r = n - 1; l < r; ++l) { while (l < r && a[l] + a[r] >= k) { --r; } if (l >= r) break; pairs += 1; used[l] = true; used[r] = true; --r; } int single = 0; int too_long = 0; for (int i = 0; i < n; ++i) { if (used[i]) continue; if (a[i] < k) { single += 1; } else { too_long += 1; } } //std::cout << pairs << ' ' << single << ' ' << too_long << ' '; int ans2 = n + 5; int pairs2 = pairs; int single2 = single; int too_long2 = too_long; std::vector<int> p = {1, 2, 3, 4, 5}; do { pairs = pairs2; single = single2; too_long = too_long2; int ans = 0; for (int i = 1; i <= 5; ++i) { if (p[i] == 1) { while (too_long >= 1 && pairs >= 1) { --too_long; --pairs; ++ans; } } if (p[i] == 2) { while (too_long >= 1 && single >= 1) { --too_long; --single; ++ans; } } if (p[i] == 3) { while (single >= 1 && pairs >= 1) { --single; --pairs; ++ans; } } if (p[i] == 4) { while (pairs >= 3) { ans += 2; pairs -= 3; } } if (p[i] == 5) { while (single >= 2) { ans += 1; single -= 2; } } } ans += pairs + single + too_long; ans2 = std::min(ans2, ans); } while (std::next_permutation(p.begin(), p.end())); std::cout << ans2 - 1 << '\n'; } int main() { int t; std::cin >> t; while (t--) { solve(); } return 0; }