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=