#include<bits/stdc++.h>
using namespace std;
/*#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
typedef tree<long long,null_type,less<long long>,rb_tree_tag,tree_order_statistics_node_update> ordered_set;
s.find_by_order(x) xth element in set
x.order_of_key(x) number of elements <x*/
#define ll long long
#define vi vector<int>
#define si set<int>
#define mii map<int,int>
#define pb push_back
#define pf push_front
#define PI acos(-1)
#define pii pair<int,int>
#define extract_word(s) stringstream str(s); while(str>>word)
#define fastio ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define SET(s) cout<<fixed<<setprecision(s)
#define set0(a) memset(a,0,sizeof(a))
#define endl "\n"
#define all(a) a.begin(),a.end()
#define rall(a) a.rbegin(),a.rend()
#define lower_string(s) transform(all(s),s.begin(),::tolower)
#define upper_string(s) transform(all(s),s.begin(),::toupper)
#define len(s) (int)s.size()
#define F first
#define S second
template<typename T,typename U>
bool compare(T x,U y){return(abs(x-y)<=1e-9);}
const int MOD=1e9+7;
void solve()
{
int n;
cin>>n;
int a[n];
for(auto &x:a)
cin>>x;
vector<vi>dp(n,vi(3));
dp[0][0]=a[0],dp[0][1]=a[0]-1,dp[0][2]=a[0]+1;
for(int i=1;i<n;i++)
{
dp[i][0]=max({__gcd(dp[i-1][0],a[i]),__gcd(dp[i-1][1],a[i]),__gcd(dp[i-1][2],a[i])});
dp[i][1]=max({__gcd(dp[i-1][0],a[i]-1),__gcd(dp[i-1][1],a[i]-1),__gcd(dp[i-1][2],a[i]-1)});
dp[i][2]=max({__gcd(dp[i-1][0],a[i]+1),__gcd(dp[i-1][1],a[i]+1),__gcd(dp[i-1][2],a[i]+1)});
}
cout<<max({dp[n-1][0],dp[n-1][1],dp[n-1][2]});
}
int main()
{
//code
fastio
int t=1;
cin>>t;
while(t--)
{
solve();
cout<<endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLyojaW5jbHVkZSA8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+CnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwp0eXBlZGVmIHRyZWU8bG9uZyBsb25nLG51bGxfdHlwZSxsZXNzPGxvbmcgbG9uZz4scmJfdHJlZV90YWcsdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPiBvcmRlcmVkX3NldDsKcy5maW5kX2J5X29yZGVyKHgpIHh0aCBlbGVtZW50IGluIHNldAp4Lm9yZGVyX29mX2tleSh4KSBudW1iZXIgb2YgZWxlbWVudHMgPHgqLwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHZpIHZlY3RvcjxpbnQ+CiNkZWZpbmUgc2kgc2V0PGludD4KI2RlZmluZSBtaWkgbWFwPGludCxpbnQ+CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcGYgcHVzaF9mcm9udAojZGVmaW5lIFBJIGFjb3MoLTEpCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBleHRyYWN0X3dvcmQocykgIHN0cmluZ3N0cmVhbSBzdHIocyk7IHdoaWxlKHN0cj4+d29yZCkKI2RlZmluZSBmYXN0aW8gaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKI2RlZmluZSBTRVQocykgY291dDw8Zml4ZWQ8PHNldHByZWNpc2lvbihzKQojZGVmaW5lIHNldDAoYSkgbWVtc2V0KGEsMCxzaXplb2YoYSkpCiNkZWZpbmUgZW5kbCAiXG4iCiNkZWZpbmUgYWxsKGEpIGEuYmVnaW4oKSxhLmVuZCgpCiNkZWZpbmUgcmFsbChhKSBhLnJiZWdpbigpLGEucmVuZCgpCiNkZWZpbmUgbG93ZXJfc3RyaW5nKHMpIHRyYW5zZm9ybShhbGwocykscy5iZWdpbigpLDo6dG9sb3dlcikKI2RlZmluZSB1cHBlcl9zdHJpbmcocykgdHJhbnNmb3JtKGFsbChzKSxzLmJlZ2luKCksOjp0b3VwcGVyKQojZGVmaW5lIGxlbihzKSAoaW50KXMuc2l6ZSgpCiNkZWZpbmUgRiBmaXJzdAojZGVmaW5lIFMgc2Vjb25kCnRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgVT4KYm9vbCBjb21wYXJlKFQgeCxVIHkpe3JldHVybihhYnMoeC15KTw9MWUtOSk7fQpjb25zdCBpbnQgTU9EPTFlOSs3Owp2b2lkIHNvbHZlKCkKewppbnQgbjsKY2luPj5uOwppbnQgYVtuXTsKZm9yKGF1dG8gJng6YSkKY2luPj54Owp2ZWN0b3I8dmk+ZHAobix2aSgzKSk7CmRwWzBdWzBdPWFbMF0sZHBbMF1bMV09YVswXS0xLGRwWzBdWzJdPWFbMF0rMTsKZm9yKGludCBpPTE7aTxuO2krKykKewoJZHBbaV1bMF09bWF4KHtfX2djZChkcFtpLTFdWzBdLGFbaV0pLF9fZ2NkKGRwW2ktMV1bMV0sYVtpXSksX19nY2QoZHBbaS0xXVsyXSxhW2ldKX0pOwoJZHBbaV1bMV09bWF4KHtfX2djZChkcFtpLTFdWzBdLGFbaV0tMSksX19nY2QoZHBbaS0xXVsxXSxhW2ldLTEpLF9fZ2NkKGRwW2ktMV1bMl0sYVtpXS0xKX0pOwoJZHBbaV1bMl09bWF4KHtfX2djZChkcFtpLTFdWzBdLGFbaV0rMSksX19nY2QoZHBbaS0xXVsxXSxhW2ldKzEpLF9fZ2NkKGRwW2ktMV1bMl0sYVtpXSsxKX0pOwp9CmNvdXQ8PG1heCh7ZHBbbi0xXVswXSxkcFtuLTFdWzFdLGRwW24tMV1bMl19KTsKfQppbnQgbWFpbigpCnsKLy9jb2RlCmZhc3RpbwppbnQgdD0xOwpjaW4+PnQ7CndoaWxlKHQtLSkKewpzb2x2ZSgpOwpjb3V0PDxlbmRsOwp9Cn0K