#define int long long constint INF = 1e18; constint M = 2520, N = 11; int n, m, a[N], b[N];
template<typename T> voidchmin(T& v, T x){ v = min(v, x); }
structMatrix { int dat[N][N];
Matrix() { memset(dat, 0, sizeof dat); }
Matrix operator*(const Matrix& mat) const { Matrix res; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) res.dat[i][j] = INF; for (int i = 0; i < n; i++) for (int k = 0; k < n; k++) for (int j = 0; j < n; j++) chmin(res.dat[i][j], dat[i][k] + mat.dat[k][j]); return res; }
Matrix pow(int k)const{ Matrix res; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) res.dat[i][j] = INF; for (int i = 0; i < n; i++) res.dat[i][i] = 0; Matrix a = *this; while (k) { if (k & 1) res = res * a; a = a * a; k >>= 1; } return res; } };
structPoint { int i, j;
boolvalid(){ return i % a[j] != b[j]; } }; int vis[M+1][N]; int dis[M+1][N]; bool trap[M+1][N];
for (int i = 0; i <= M; i++) for (int j = 0; j < n; j++) dis[i][j] = INF; if (!start.valid() && !specialStart) { return; }
dis[start.i][start.j] = 0;
while (q.size()) { Point t = q.front(); q.pop(); if (vis[t.i][t.j] == ts) continue;
vis[t.i][t.j] = ts;
Point nxt = {t.i, (t.j+1) % n}; if (nxt.valid()) { chmin(dis[nxt.i][nxt.j], dis[t.i][t.j] + 1); q.push(nxt); }
if (t.i+1 <= M) { nxt = {t.i+1, (t.j+1) % n}; if (nxt.valid()) { chmin(dis[nxt.i][nxt.j], dis[t.i][t.j] + 1); q.push(nxt); } } } }
intsolve(){ cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i <= n; i++) cin >> b[i]; a[0] = a[n], b[0] = b[n];
if (m < M) { bfs({0, 0}, true); int ans = INF; for (int j = 0; j < n; j++) { chmin(ans, dis[m][j]); } return ans; }
Matrix G, H, G0;
bfs({0, 0}, true); for (int k = 0; k < n; k++) { G0.dat[0][k] = dis[M][k]; }
for (int j = 0; j < n; j++) { bfs({0, j}, false); for (int k = 0; k < n; k++) { if (j != 0) G0.dat[j][k] = dis[M][k]; G.dat[j][k] = dis[M][k]; H.dat[j][k] = dis[m % M][k]; } }
Matrix R = G0 * G.pow(m / M - 1) * H; int ans = INF; for (int j = 0; j < n; j++) { chmin(ans, R.dat[0][j]); } return ans; }
signedmain(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int T; cin >> T; while (T--) { int ans = solve(); if (ans >= INF) ans = -1; cout << ans << '\n'; } return0; }