#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ld long double
#define all(x) (x).begin(), (x).end()
#define debug(x) cerr << #x << " = " << (x) << endl;
const int MOD = 1e9 + 7;
const int INF = 1e18;
const ld PI = acos(-1.0);
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a/gcd(a,b)*b;}
void solve(){
    int n;cin>>n;
    vector<int>arr(n),b(n);
    for(int i=0;i<n;i++)cin>>arr[i];
    for(int i=0;i<n;i++)cin>>b[i];
    unordered_map<int,int>factors;
    int maxi=0,largest_num=0,freq_even=0;
    for(int i=0;i<n;i++){
        if(arr[i]%2==0) freq_even++;
        bool hasFactor=false;
        for(int j=2;j*j<=arr[i];j++){
            if(arr[i]%j==0){
                hasFactor=true;
                int fact1=j; int fact2=arr[i]/j;
                if(fact1==fact2) factors[fact1]++;
                else{
                    factors[fact1]++;
                    factors[fact2]++;
                }
                if(factors[fact1]>=maxi){
                    largest_num=fact1;
                    maxi=factors[fact1];
                }
                if(factors[fact2]>=maxi){
                    largest_num=fact2;
                    maxi=factors[fact2];
                }
            }
        }
        if(!hasFactor&&arr[i]>1){
            factors[arr[i]]++;
            if(factors[arr[i]]>=maxi){
                largest_num=arr[i];
                maxi=factors[arr[i]];
            }
        }
    }
    if(maxi>=2){
        cout<<0<<endl;
        return;
    }
    if(freq_even==1){
        cout<<1<<endl;
        return;
    }
    for(int i=0;i<n;i++){
        int prev=arr[i];
        bool hasFactor=false;
        for(int j=2;j*j<=prev;j++){
            if(prev%j==0){
                hasFactor=true;
                int fact1=j,fact2=prev/j;
                if(fact1==fact2) factors[fact1]--;
                else{
                    factors[fact1]--;
                    factors[fact2]--;
                }
            }
        }
        if(!hasFactor&&prev>1) factors[prev]--;
 
        int curr=arr[i]+1;
        maxi=0;
        largest_num=0;
        bool currHasFactor=false;
        for(int j=2;j*j<=curr;j++){
            if(curr%j==0){
                currHasFactor=true;
                int fact1=j; 
                int fact2=curr/j;
                if(fact1==fact2) factors[fact1]++;
                else{
                    factors[fact1]++;
                    factors[fact2]++;
                }
                if(factors[fact1]>=maxi){
                    largest_num=fact1;
                    maxi=factors[fact1];
                }
                if(factors[fact2]>=maxi){
                    largest_num=fact2;
                    maxi=factors[fact2];
                }
            }
        }
 
        if(!currHasFactor&&curr>1){
            factors[curr]++;
            if(factors[curr]>=maxi){
                largest_num=curr;
                maxi=factors[curr];
            }
        }
 
        if(maxi>=2){
            cout<<1<<endl;
            return;
        }
 
        for(int j=2;j*j<=curr;j++){
            if(curr%j==0){
                int fact1=j;
                int fact2=curr/j;
                if(fact1==fact2) factors[fact1]--;
                else{
                    factors[fact1]--;
                    factors[fact2]--;
                }
            }
        }
 
        if(!currHasFactor&&curr>1) factors[curr]--;
 
        for(int j=2;j*j<=prev;j++){
            if(prev%j==0){
                int fact1=j;
                int fact2=prev/j;
                if(fact1==fact2)factors[fact1]++;
                else{
                    factors[fact1]++;
                    factors[fact2]++;
                }
            }
        }
 
        if(!hasFactor&&prev>1) factors[prev]++;
    }
    cout<<2<<endl;
}
int32_t main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int t=1;cin>>t;
    while(t--){solve();}
    return 0;
}