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==