// #include<debugger.h>
#include<bits/stdc++.h>
using namespace std;
// #include<ext/pb_ds/assoc_container.hpp>
// using namespace __gnu_pbds;
#define int long long
// typedef long long ll;
// typedef tree< int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update > ordered_set;
#define endl '\n'
#define mem(a,b) memset(a, b, sizeof(a))
#define optimize() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define fraction() cout.unsetf(ios::floatfield); cout.precision(10); cout.setf(ios::fixed,ios::floatfield);
#define file() freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
#define MOD 1000000007
const double PI = acos(-1);
const double eps = 1e-9;
const int MX = 2e5 + 10;
bitset<MX> isPrime;
vector<int> lowestPrime(MX, 0);
void sieve()
{
for (int i = 3; i < MX; i += 2) isPrime[i] = 1;
for (int i = 3; i < MX; i += 2) {
if (isPrime[i] == 1) {
lowestPrime[i] = i;
for (int j = i*i; j < MX; j += (i + i)) {
isPrime[j] = 0;
if (lowestPrime[j] == 0)
lowestPrime[j] = i;
}
}
}
isPrime[2] = 1;
for (int i = 2; i < MX; i += 2)
lowestPrime[i] = 2;
}
vector<int> factorization(int n) {
vector<int> ret;
while (n > 1) {
int p = lowestPrime[n];
if (n % p == 0)
ret.push_back(p);
while (n % p == 0) {
n /= p;
}
}
return ret;
}
void solve(int ti)
{
int n;
cin >> n;
vector<int> a(n), b(n);
for (int &x : a)
cin >> x;
for (int &x : b)
cin >> x;
set<int> st;
for (int i = 0; i < n; i++) {
if (a[i] == 1) continue;
vector<int> ret = factorization(a[i]);
for (int x : ret) {
if (!st.empty() and st.find(x) != st.end()) {
cout << 0 << endl;
return;
}
st.insert(x);
}
}
for (int i = 0; i < n; i++) {
vector<int> ret = factorization(a[i] + 1);
for (int x : ret) {
if (!st.empty() and st.find(x) != st.end()) {
cout << 1 << endl;
return;
}
}
}
cout << 2 << endl;
}
int tc = 1;
int32_t main()
{
sieve();
optimize();
// file();
if(tc){int t;cin>>t;for(int i=1;i<=t;i++)solve(i);}
else solve(1);
return 0;
}
Ly8gI2luY2x1ZGU8ZGVidWdnZXIuaD4KIAojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi8vICNpbmNsdWRlPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgovLyB1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsKIAojZGVmaW5lIGludCBsb25nIGxvbmcKLy8gdHlwZWRlZiBsb25nIGxvbmcgbGw7Ci8vIHR5cGVkZWYgdHJlZTwgaW50LCBudWxsX3R5cGUsIGxlc3NfZXF1YWw8aW50PiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZSA+IG9yZGVyZWRfc2V0OwogCiNkZWZpbmUgZW5kbCAnXG4nCiNkZWZpbmUgbWVtKGEsYikgbWVtc2V0KGEsIGIsIHNpemVvZihhKSkKI2RlZmluZSBvcHRpbWl6ZSgpIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKI2RlZmluZSBmcmFjdGlvbigpIGNvdXQudW5zZXRmKGlvczo6ZmxvYXRmaWVsZCk7IGNvdXQucHJlY2lzaW9uKDEwKTsgY291dC5zZXRmKGlvczo6Zml4ZWQsaW9zOjpmbG9hdGZpZWxkKTsKI2RlZmluZSBmaWxlKCkgZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pO2ZyZW9wZW4oIm91dHB1dC50eHQiLCJ3IixzdGRvdXQpOwogCiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKY29uc3QgZG91YmxlIFBJID0gYWNvcygtMSk7CmNvbnN0IGRvdWJsZSBlcHMgPSAxZS05OwoKY29uc3QgaW50IE1YID0gMmU1ICsgMTA7CmJpdHNldDxNWD4gaXNQcmltZTsKdmVjdG9yPGludD4gbG93ZXN0UHJpbWUoTVgsIDApOwogCnZvaWQgc2lldmUoKSAKeyAKICAgIGZvciAoaW50IGkgPSAzOyBpIDwgTVg7IGkgKz0gMikgaXNQcmltZVtpXSA9IDE7IAogCiAgICBmb3IgKGludCBpID0gMzsgaSA8IE1YOyBpICs9IDIpIHsgCiAgICAgICAgaWYgKGlzUHJpbWVbaV0gPT0gMSkgewogICAgICAgICAgICBsb3dlc3RQcmltZVtpXSA9IGk7CiAgICAgICAgICAgIGZvciAoaW50IGogPSBpKmk7IGogPCBNWDsgaiArPSAoaSArIGkpKSB7IAogICAgICAgICAgICAgICAgaXNQcmltZVtqXSA9IDA7CiAgICAgICAgICAgICAgICBpZiAobG93ZXN0UHJpbWVbal0gPT0gMCkKICAgICAgICAgICAgICAgICAgICBsb3dlc3RQcmltZVtqXSA9IGk7IAogICAgICAgICAgICB9IAogICAgICAgIH0gCiAgICB9IAogCiAgICBpc1ByaW1lWzJdID0gMTsKICAgIGZvciAoaW50IGkgPSAyOyBpIDwgTVg7IGkgKz0gMikKICAgICAgICBsb3dlc3RQcmltZVtpXSA9IDI7Cn0gCgp2ZWN0b3I8aW50PiBmYWN0b3JpemF0aW9uKGludCBuKSB7CiAgICB2ZWN0b3I8aW50PiByZXQ7IAoKICAgIHdoaWxlIChuID4gMSkgeyAKICAgICAgICBpbnQgcCA9IGxvd2VzdFByaW1lW25dOyAKICAgCiAgICAgICAgaWYgKG4gJSBwID09IDApCiAgICAgICAgICAgIHJldC5wdXNoX2JhY2socCk7CgogICAgICAgIHdoaWxlIChuICUgcCA9PSAwKSB7IAogICAgICAgICAgICBuIC89IHA7IAogICAgICAgIH0gCiAgICB9IAoKICAgIHJldHVybiByZXQ7IAp9Cgp2b2lkIHNvbHZlKGludCB0aSkKewogICAgaW50IG47CiAgICBjaW4gPj4gbjsKCiAgICB2ZWN0b3I8aW50PiBhKG4pLCBiKG4pOwogICAgZm9yIChpbnQgJnggOiBhKQogICAgICAgIGNpbiA+PiB4OwoKICAgIGZvciAoaW50ICZ4IDogYikKICAgICAgICBjaW4gPj4geDsKCiAgICBzZXQ8aW50PiBzdDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgaWYgKGFbaV0gPT0gMSkgY29udGludWU7CiAgICAgICAgCiAgICAgICAgdmVjdG9yPGludD4gcmV0ID0gZmFjdG9yaXphdGlvbihhW2ldKTsKICAgICAgICBmb3IgKGludCB4IDogcmV0KSB7CiAgICAgICAgICAgIGlmICghc3QuZW1wdHkoKSBhbmQgc3QuZmluZCh4KSAhPSBzdC5lbmQoKSkgewogICAgICAgICAgICAgICAgY291dCA8PCAwIDw8IGVuZGw7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3QuaW5zZXJ0KHgpOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIHZlY3RvcjxpbnQ+IHJldCA9IGZhY3Rvcml6YXRpb24oYVtpXSArIDEpOwogICAgICAgIGZvciAoaW50IHggOiByZXQpIHsKICAgICAgICAgICAgaWYgKCFzdC5lbXB0eSgpIGFuZCBzdC5maW5kKHgpICE9IHN0LmVuZCgpKSB7CiAgICAgICAgICAgICAgICBjb3V0IDw8IDEgPDwgZW5kbDsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IDIgPDwgZW5kbDsKfQogICAgCmludCB0YyA9IDE7CiAKaW50MzJfdCBtYWluKCkKeyAgIAogICAgc2lldmUoKTsKICAgIAogICAgb3B0aW1pemUoKTsKICAgIC8vIGZpbGUoKTsgCiAgICBpZih0Yyl7aW50IHQ7Y2luPj50O2ZvcihpbnQgaT0xO2k8PXQ7aSsrKXNvbHZlKGkpO30gCiAgICBlbHNlIHNvbHZlKDEpOwogICAgcmV0dXJuIDA7Cn0=