#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};

	do {
		pairs = pairs2;
		single = single2;
		too_long = too_long2;
		int ans = 0;

		for (int i = 1; i <= 4; ++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;
				}
			}
		}

		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;
}