There are n programmers that you want to split into several non-empty teams. The skill of the i-th programmer is a_i. You want to assemble the maximum number of teams from them. There is a restriction for each team: the number of programmers in the team multiplied by the minimum skill among all programmers in the team must be at least x.

Each programmer should belong to at most one team. Some programmers may be left without a team.

Calculate the maximum number of teams that you can assemble.

Input

The first line contains the integer t (1 ≤ t ≤ 1000) — the number of test cases.

The first line of each test case contains two integers n and x (1 ≤ n ≤ 10^5; 1 ≤ x ≤ 10^9) — the number of programmers and the restriction of team skill respectively.

The second line of each test case contains n integers a_1, a_2, ... , a_n (1 ≤ a_i ≤ 10^9), where a_i is the skill of the i-th programmer.

The sum of n over all inputs does not exceed 10^5.

Output

For each test case print one integer — the maximum number of teams that you can assemble. 

Example

Input


3
5 10
7 11 2 9 5
4 8
2 4 2 3
4 11
1 3 3 7


Output


2
1
0
import sys
import math
from math import *
import builtins
import collections
import bisect
import os
from io import BytesIO, IOBase
from itertools import permutations
import string
  

 
 
def print(x, end='\n'):
    sys.stdout.write(str(x) + end)
 
 
# IO helpers
def get_int():
    return int(input())
 
 
def get_list_ints():
    return list(map(int, input().split()))
 
def get_list_float():
    return list(map(float, input().split()))
 
 
def get_char_list():
    s = input()
    return list(s[:len(s)])
 
 
def get_tuple_ints():
    return tuple(map(int, input().split()))
 
 
def print_iterable(p):
    print(" ".join(map(str, p)))
 
def CountFrequency(arr):
    return collections.Counter(arr) 
 
def reverse(s):
    l=len(s)
    for i in range(l//2):
        s[i],s[l-i-1]=s[l-i-1],s[i]
    return s
 
 
def binary_search(arr, x):
    low = 0
    high = len(arr) - 1
    mid = 0
    while low <= high:
        mid = (high + low) // 2
        if arr[mid] < x:
            low = mid + 1
        elif arr[mid] > x:
            high = mid - 1
        else:
            return mid
    return high
 
#STD lower bound equivalent in python
def lower_bound(arr,x):
    return bisect.bisect_left(arr, x, lo=0, hi=len(arr))
 
 #STD upper bound equivalent in python
def upper_bound(arr,x):
    return bisect.bisect_right(arr, x, lo=0, hi=len(arr))
 
def position(x):
    return ord(x)-ord("a")+1
 
 
def pow(a,n):
    if n==0:
        return 1
    elif n%2==0:
        return ((pow(a,n//2)%const)*(pow(a,n//2)%const))%const
    else:
        return ((pow(a,n//2)%const)*(pow(a,n//2)%const)*(a%const))%const


 
def main():
    t=get_int()
    for i in range(t):
        [n,x]=get_list_ints()
        list=get_list_ints()
        list.sort()
        alist=[]
        for i in list:
            alist.append(math.ceil(x/i))
        anslist=[0 for i in range(n)]
        if alist[-1]==1:
            anslist[-1]=1
        anslist.append(0)
        for j in range(n-2,-1,-1):
            if n-j<alist[j]:
                anslist[j]=0
            else:
                anslist[j]=1+anslist[j+alist[j]]
        print(max(anslist))
    pass
 
 
##Fast Input Output
 
BUFSIZE = 8192
 
 
class FastIO(IOBase):
    newlines = 0
 
    def __init__(self, file):
        self._fd = file.fileno()
        self.buffer = BytesIO()
        self.writable = "x" in file.mode or "r" not in file.mode
        self.write = self.buffer.write if self.writable else None
 
    def read(self):
        while True:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            if not b:
                break
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines = 0
        return self.buffer.read()
 
    def readline(self):
        while self.newlines == 0:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            self.newlines = b.count(b"\n") + (not b)
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines -= 1
        return self.buffer.readline()
 
    def flush(self):
        if self.writable:
            os.write(self._fd, self.buffer.getvalue())
            self.buffer.truncate(0), self.buffer.seek(0)
 
 
class IOWrapper(IOBase):
    def __init__(self, file):
        self.buffer = FastIO(file)
        self.flush = self.buffer.flush
        self.writable = self.buffer.writable
        self.write = lambda s: self.buffer.write(s.encode("ascii"))
        self.read = lambda: self.buffer.read().decode("ascii")
        self.readline = lambda: self.buffer.readline().decode("ascii")
 
 
sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout)
input = lambda: sys.stdin.readline().rstrip("\r\n")
 
# endregion
 
if __name__ == "__main__":
    main()