#include <cstdio>
#include <iostream>
#include <vector>
#include <list>
#include <queue>
#include <map>
#include <set>
#include <utility>
#include <functional>
#include <string>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef map<int,int> mii;
typedef vector<int> vi;
typedef vector< vector<int> > vvi;
typedef vector<char> vc;
typedef vector<bool> vb;
typedef vector<string> vs;
#define rep(i,n) for(int i=0;i<(n);i++)
#define forup(i,a,b) for(int i=(a);i<=(b);i++)
#define fordn(i,a,b) for(int i=(a);i>=(b);i--)
#define drep(i,n) for(i=0;i<(n);i++)
#define dforup(i,a,b) for(i=(a);i<=(b);i++)
#define dfordn(i,a,b) for(i=(a);i>=(b);i--)
#define all(x) x.begin(),x.end()
#define permute(x) next_permutation(all(x))
#define pb push_back
#define mp make_pair
#define fi first
#define sc second
#define gi(x) scanf("%d",&x)
int t,n,k,x;
vi a;
int main() {
gi(t);
while(t--) {
gi(n); gi(k);
a=vi();
bool f=false;
rep(i,n) {
gi(x);
if(x<=k) a.pb(x);
else f=true;
}
sort(all(a));
n=a.size();
if(n<2) printf("0\n");
else if(a[1]==0) printf("-1\n");
else if(f) printf("%d\n",n-1);
else if(a[n-1]<2 or a[n-2]==0) printf("-1\n");
else {
int ans=0;
while((ll(a[n-2])*a[n-1])<=(ll)k) {
int tmp=a[n-2]*a[n-1];
a[n-2]=min(a[n-1],tmp);
a[n-1]=max(a[n-1],tmp);
ans++;
//printf("%d\n",tmp);
}
ans+=n-1;
printf("%d\n",ans);
}
}
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxjdGltZT4KIAp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8aW50LGludD4gcGlpOwp0eXBlZGVmIG1hcDxpbnQsaW50PiBtaWk7CnR5cGVkZWYgdmVjdG9yPGludD4gdmk7CnR5cGVkZWYgdmVjdG9yPCB2ZWN0b3I8aW50PiA+IHZ2aTsKdHlwZWRlZiB2ZWN0b3I8Y2hhcj4gdmM7CnR5cGVkZWYgdmVjdG9yPGJvb2w+IHZiOwp0eXBlZGVmIHZlY3RvcjxzdHJpbmc+IHZzOwogCiNkZWZpbmUgcmVwKGksbikgZm9yKGludCBpPTA7aTwobik7aSsrKQojZGVmaW5lIGZvcnVwKGksYSxiKSBmb3IoaW50IGk9KGEpO2k8PShiKTtpKyspCiNkZWZpbmUgZm9yZG4oaSxhLGIpIGZvcihpbnQgaT0oYSk7aT49KGIpO2ktLSkKI2RlZmluZSBkcmVwKGksbikgZm9yKGk9MDtpPChuKTtpKyspCiNkZWZpbmUgZGZvcnVwKGksYSxiKSBmb3IoaT0oYSk7aTw9KGIpO2krKykKI2RlZmluZSBkZm9yZG4oaSxhLGIpIGZvcihpPShhKTtpPj0oYik7aS0tKQojZGVmaW5lIGFsbCh4KSB4LmJlZ2luKCkseC5lbmQoKQojZGVmaW5lIHBlcm11dGUoeCkgbmV4dF9wZXJtdXRhdGlvbihhbGwoeCkpCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzYyBzZWNvbmQKI2RlZmluZSBnaSh4KSBzY2FuZigiJWQiLCZ4KQogCmludCB0LG4sayx4Owp2aSBhOwogCmludCBtYWluKCkgewoJZ2kodCk7Cgl3aGlsZSh0LS0pIHsKCQlnaShuKTsgZ2koayk7CgkJYT12aSgpOwoJCWJvb2wgZj1mYWxzZTsKCQlyZXAoaSxuKSB7CgkJCWdpKHgpOwoJCQlpZih4PD1rKSBhLnBiKHgpOwoJCQllbHNlIGY9dHJ1ZTsKCQl9CgkJc29ydChhbGwoYSkpOwoJCW49YS5zaXplKCk7CgkJaWYobjwyKSBwcmludGYoIjBcbiIpOwoJCWVsc2UgaWYoYVsxXT09MCkgcHJpbnRmKCItMVxuIik7CgkJZWxzZSBpZihmKSBwcmludGYoIiVkXG4iLG4tMSk7CgkJZWxzZSBpZihhW24tMV08MiBvciBhW24tMl09PTApIHByaW50ZigiLTFcbiIpOwoJCWVsc2UgewoJCQlpbnQgYW5zPTA7CgkJCXdoaWxlKChsbChhW24tMl0pKmFbbi0xXSk8PShsbClrKSB7CgkJCQlpbnQgdG1wPWFbbi0yXSphW24tMV07CgkJCQlhW24tMl09bWluKGFbbi0xXSx0bXApOwoJCQkJYVtuLTFdPW1heChhW24tMV0sdG1wKTsKCQkJCWFucysrOwoJCQkJLy9wcmludGYoIiVkXG4iLHRtcCk7CgkJCX0KCQkJYW5zKz1uLTE7CgkJCXByaW50ZigiJWRcbiIsYW5zKTsKCQl9Cgl9CglyZXR1cm4gMDsKfQog