import java.util.*;
class Codechef {
static final int N = 200000;
static ArrayList
<Integer
>[] div
= new ArrayList[N
];
static {
pre();
}
static void pre() {
for (int i = 0; i < N; i++) div[i] = new ArrayList<>();
for (int i = 2; i < N; i++)
for (int j = i; j < N; j += i)
div[j].add(i);
}
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]; // cost
for (int i = 0; i < n; i++){
A[i] = sc.nextInt();
}
for (int i = 0; i < n; i++){
B[i] = sc.nextInt();
}
}
sc.close();
}
public static int gcd(int[] a, int[] b) {
int n = a.length;
HashSet<Integer> map = new HashSet<>();
for (int x : a) {
for (int p : div[x]) {
if (map.contains(p)) return 0; // no ops needed....
map.add(p);
}
}
HashMap
<Integer, Integer
> cnt
= new HashMap
<>(); for (int x : a)
for (int p : div[x])
cnt.put(p, cnt.getOrDefault(p, 0) + 1);
for (int i = 0; i < n; i++) {
int x = a[i];
for (int p : div[x])
cnt.put(p, cnt.get(p) - 1);
int y = x + b[i];
for (int p : div[y])
if (cnt.getOrDefault(p, 0) > 0)
return 1; // when case of making 1 e to o or 1 o to e...
for (int p : div[x])
cnt.put(p, cnt.get(p) + 1);
}
return 2; // when case of making 2 odds to even
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgQ29kZWNoZWYgewogICAgc3RhdGljIGZpbmFsIGludCBOID0gMjAwMDAwOwogICAgc3RhdGljIEFycmF5TGlzdDxJbnRlZ2VyPltdIGRpdiA9IG5ldyBBcnJheUxpc3RbTl07CgogICAgc3RhdGljIHsKICAgICAgICBwcmUoKTsKICAgIH0KICAgIHN0YXRpYyB2b2lkIHByZSgpIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgZGl2W2ldID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgZm9yIChpbnQgaSA9IDI7IGkgPCBOOyBpKyspCiAgICAgICAgICAgIGZvciAoaW50IGogPSBpOyBqIDwgTjsgaiArPSBpKQogICAgICAgICAgICAgICAgZGl2W2pdLmFkZChpKTsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIFNjYW5uZXIgc2MgPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwogICAgICAgIGludCB0ID0gc2MubmV4dEludCgpOwogICAgICAgIHdoaWxlICh0LS0gPiAwKSB7CiAgICAgICAgICAgIGludCBuID0gc2MubmV4dEludCgpOwogICAgICAgICAgICBpbnRbXSBBID0gbmV3IGludFtuXTsgCiAgICAgICAgICAgIGludFtdIEIgPSBuZXcgaW50W25dOyAvLyBjb3N0CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKXsKICAgICAgICAgICAgICAgIEFbaV0gPSBzYy5uZXh0SW50KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspewogICAgICAgICAgICAgICAgQltpXSA9IHNjLm5leHRJbnQoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZ2NkKEEsQikpOwogICAgICAgIH0KICAgICAgICBzYy5jbG9zZSgpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgaW50IGdjZChpbnRbXSBhLCBpbnRbXSBiKSB7CiAgICAgICAgaW50IG4gPSBhLmxlbmd0aDsKICAgICAgICBIYXNoU2V0PEludGVnZXI+IG1hcCA9IG5ldyBIYXNoU2V0PD4oKTsKICAgICAgICBmb3IgKGludCB4IDogYSkgewogICAgICAgICAgICBmb3IgKGludCBwIDogZGl2W3hdKSB7CiAgICAgICAgICAgICAgICBpZiAobWFwLmNvbnRhaW5zKHApKSByZXR1cm4gMDsgLy8gbm8gb3BzIG5lZWRlZC4uLi4KICAgICAgICAgICAgICAgIG1hcC5hZGQocCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgSGFzaE1hcDxJbnRlZ2VyLCBJbnRlZ2VyPiBjbnQgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgZm9yIChpbnQgeCA6IGEpCiAgICAgICAgICAgIGZvciAoaW50IHAgOiBkaXZbeF0pCiAgICAgICAgICAgICAgICBjbnQucHV0KHAsIGNudC5nZXRPckRlZmF1bHQocCwgMCkgKyAxKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBpbnQgeCA9IGFbaV07CiAgICAgICAgICAgIGZvciAoaW50IHAgOiBkaXZbeF0pCiAgICAgICAgICAgICAgICBjbnQucHV0KHAsIGNudC5nZXQocCkgLSAxKTsKICAgICAgICAgICAgaW50IHkgPSB4ICsgYltpXTsKICAgICAgICAgICAgZm9yIChpbnQgcCA6IGRpdlt5XSkKICAgICAgICAgICAgICAgIGlmIChjbnQuZ2V0T3JEZWZhdWx0KHAsIDApID4gMCkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsgLy8gd2hlbiBjYXNlIG9mIG1ha2luZyAxIGUgdG8gbyBvciAxIG8gdG8gZS4uLgogICAgICAgICAgICBmb3IgKGludCBwIDogZGl2W3hdKQogICAgICAgICAgICAgICAgY250LnB1dChwLCBjbnQuZ2V0KHApICsgMSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAyOyAgLy8gd2hlbiBjYXNlIG9mIG1ha2luZyAyIG9kZHMgdG8gZXZlbgogICAgfQp9Cg==