#include <bits/stdc++.h>
using namespace std;
template <class T>
ostream &operator<<(ostream &os, const vector<T> &p) {
  os << "[";
  for (auto &it : p) os << it << " ";
  return os << "]";
}
template <class T>
ostream &operator<<(ostream &os, const set<T> &p) {
  os << "[";
  for (auto &it : p) os << it << " ";
  return os << "]";
}
template <class T>
ostream &operator<<(ostream &os, const multiset<T> &p) {
  os << "[";
  for (auto &it : p) os << it << " ";
  return os << "]";
}
template <class S, class T>
ostream &operator<<(ostream &os, const map<S, T> &p) {
  os << "[";
  for (auto &it : p) os << it << " ";
  return os << "]";
}
template <class S, class T>
ostream &operator<<(ostream &os, const pair<S, T> &p) {
  return os << "(" << p.first << "," << p.second << ")";
}
template <class S, class T>
ostream &operator<<(ostream &os, const unordered_map<S, T> &v) {
  for (auto i : v) os << '(' << i.first << "=>" << i.second << ')' << ' ';
  return os;
}
template <class T>
bool umin(T &a, T b) {
  return a > b ? (a = b, true) : false;
}
template <class T>
bool umax(T &a, T b) {
  return a < b ? (a = b, true) : false;
}
const long long N = 2e5 + 1;
void solve() {
  long long n, x;
  cin >> n >> x;
  vector<long long> v;
  long long ans = 0;
  for (long long i = 0; i < n; i++) {
    long long a;
    cin >> a;
    if (a >= x)
      ans++;
    else
      v.push_back(a);
  }
  sort(v.begin(), v.end());
  long long len = 0;
  for (long long i = (long long)v.size() - 1; i >= 0; i--) {
    len++;
    if (v[i] * len >= x) {
      ans++;
      len = 0;
    }
  }
  cout << ans << '\n';
}
signed main() {
  long long q = 1;
  cin >> q;
  while (q--) solve();
}
