import java.util.*;
class Codechef {
static final int N = 200000;
static ArrayList
<Integer
>[] fac
= new ArrayList[N
];
static {
pre();
}
public static void main
(String[] args
) { Scanner sc
= new Scanner
(System.
in); int t = sc.nextInt();
while (t-- > 0) {
int n = sc.nextInt();
int[] a = new int[n];
int[] b = new int[n];
for (int i = 0; i < n; i++) a[i] = sc.nextInt();
for (int i = 0; i < n; i++) b[i] = sc.nextInt();
System.
out.
println(solve
(a, b
)); }
sc.close();
}
static void pre() {
for (int i = 0; i < N; i++) fac[i] = new ArrayList<>();
for (int i = 2; i < N; i++)
for (int j = i; j < N; j += i)
fac[j].add(i);
}
static int solve(int[] a, int[] b) {
int n = a.length;
// cumulative gcd
int g = a[0];
for (int i = 1; i < n; i++) {
g = gcd(g, a[i]);
if (g > 1) return 0; // no ops needed
}
HashMap
<Integer, Integer
> map
= new HashMap
<>(); int Ecnt = 0;
for (int num : a) {
if ((num & 1) == 0) Ecnt++;
for (int p : fac[num])
map.put(p, map.getOrDefault(p, 0) + 1);
}
if (Ecnt == 1) return 1;
for (int i = 0; i < n; i++) {
int num = a[i];
// Remove a[i]'s factors
for (int p : fac[num]) {
map.put(p, map.get(p) - 1);
if (map.get(p)==0) map.remove(p);
}
int found = 0;
for (int p : fac[num+1]) {
if (map.containsKey(p)) {
found=1;
break;
}
}
if (found==1) return 1; // 1 ops is sufficiant
// Restore a[i]'s factors
for (int p : fac[num])
map.put(p, map.getOrDefault(p, 0) + 1);
}
// Nothing works → need 2 ops
return 2;
}
static int gcd(int a, int b) {
while (b != 0) {
int t = b;
b = a % b;
a = t;
}
return a;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgQ29kZWNoZWYgewogICAgc3RhdGljIGZpbmFsIGludCBOID0gMjAwMDAwOwogICAgc3RhdGljIEFycmF5TGlzdDxJbnRlZ2VyPltdIGZhYyA9IG5ldyBBcnJheUxpc3RbTl07CgogICAgc3RhdGljIHsKICAgICAgICBwcmUoKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgU2Nhbm5lciBzYyA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CiAgICAgICAgaW50IHQgPSBzYy5uZXh0SW50KCk7CiAgICAgICAgd2hpbGUgKHQtLSA+IDApIHsKICAgICAgICAgICAgaW50IG4gPSBzYy5uZXh0SW50KCk7CiAgICAgICAgICAgIGludFtdIGEgPSBuZXcgaW50W25dOwogICAgICAgICAgICBpbnRbXSBiID0gbmV3IGludFtuXTsKICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGFbaV0gPSBzYy5uZXh0SW50KCk7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSBiW2ldID0gc2MubmV4dEludCgpOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc29sdmUoYSwgYikpOwogICAgICAgIH0KICAgICAgICBzYy5jbG9zZSgpOwogICAgfQoKICAgIHN0YXRpYyB2b2lkIHByZSgpIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgZmFjW2ldID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgZm9yIChpbnQgaSA9IDI7IGkgPCBOOyBpKyspCiAgICAgICAgICAgIGZvciAoaW50IGogPSBpOyBqIDwgTjsgaiArPSBpKQogICAgICAgICAgICAgICAgZmFjW2pdLmFkZChpKTsKICAgIH0KCiAgICBzdGF0aWMgaW50IHNvbHZlKGludFtdIGEsIGludFtdIGIpIHsKICAgICAgICBpbnQgbiA9IGEubGVuZ3RoOwoKICAgICAgICAvLyBjdW11bGF0aXZlIGdjZCAKICAgICAgICBpbnQgZyA9IGFbMF07CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgZyA9IGdjZChnLCBhW2ldKTsKICAgICAgICAgICAgaWYgKGcgPiAxKSByZXR1cm4gMDsgLy8gbm8gb3BzIG5lZWRlZAogICAgICAgIH0KCiAgICAgICAgSGFzaE1hcDxJbnRlZ2VyLCBJbnRlZ2VyPiBtYXAgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgaW50IEVjbnQgPSAwOwoKICAgICAgICBmb3IgKGludCBudW0gOiBhKSB7CiAgICAgICAgICAgIGlmICgobnVtICYgMSkgPT0gMCkgRWNudCsrOwogICAgICAgICAgICBmb3IgKGludCBwIDogZmFjW251bV0pCiAgICAgICAgICAgICAgICBtYXAucHV0KHAsIG1hcC5nZXRPckRlZmF1bHQocCwgMCkgKyAxKTsKICAgICAgICB9CgogICAgICAgIGlmIChFY250ID09IDEpIHJldHVybiAxOwoKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBpbnQgbnVtID0gYVtpXTsKCiAgICAgICAgICAgIC8vIFJlbW92ZSBhW2ldJ3MgZmFjdG9ycwogICAgICAgICAgICBmb3IgKGludCBwIDogZmFjW251bV0pIHsKICAgICAgICAgICAgICAgIG1hcC5wdXQocCwgbWFwLmdldChwKSAtIDEpOwogICAgICAgICAgICAgICAgaWYgKG1hcC5nZXQocCk9PTApIG1hcC5yZW1vdmUocCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGludCBmb3VuZCA9IDA7CiAgICAgICAgICAgIGZvciAoaW50IHAgOiBmYWNbbnVtKzFdKSB7CiAgICAgICAgICAgICAgICBpZiAobWFwLmNvbnRhaW5zS2V5KHApKSB7CiAgICAgICAgICAgICAgICAgICAgZm91bmQ9MTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZm91bmQ9PTEpIHJldHVybiAxOyAvLyAxIG9wcyBpcyBzdWZmaWNpYW50CgogICAgICAgICAgICAvLyBSZXN0b3JlIGFbaV0ncyBmYWN0b3JzCiAgICAgICAgICAgIGZvciAoaW50IHAgOiBmYWNbbnVtXSkKICAgICAgICAgICAgICAgIG1hcC5wdXQocCwgbWFwLmdldE9yRGVmYXVsdChwLCAwKSArIDEpOwogICAgICAgIH0KCiAgICAgICAgLy8gTm90aGluZyB3b3JrcyDihpIgbmVlZCAyIG9wcwogICAgICAgIHJldHVybiAyOwogICAgfQoKICAgIHN0YXRpYyBpbnQgZ2NkKGludCBhLCBpbnQgYikgewogICAgICAgIHdoaWxlIChiICE9IDApIHsKICAgICAgICAgICAgaW50IHQgPSBiOwogICAgICAgICAgICBiID0gYSAlIGI7CiAgICAgICAgICAgIGEgPSB0OwogICAgICAgIH0KICAgICAgICByZXR1cm4gYTsKICAgIH0KfQo=