//#pragma comment(linker,"/STACK:102400000,102400000") #include #include #include #include #include #include #include #include #include #include #define ll long long #define db double #define PB push_back #define lson k<<1 #define rson k<<1|1 using namespace std; const int N = 25; const int M = 1000006; int r, b[N], n; void dfs(int a, int k) { if(k + 1 >= r) return; for(int i = 0; i < n; i++) { if(a % b[i] == 0) { r = min(r, k + 1); return; } else if(a > b[i]) { dfs(a % b[i], k + 1); } } } int main() { #ifdef PKWV // freopen("in.in","r",stdin); #endif // PKWV int T; scanf("%d", &T); while(T--) { int a; scanf("%d%d", &n, &a); for(int i = 0; i < n; i++) { scanf("%d", &b[i]); } r = 30; dfs(a, 0); if(r == 30) printf("%d\n", -1); else printf("%d\n", r); } return 0; }