#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <map>
#include <set>
using namespace std;
typedef long long ll;
static const int MAX_N = 1e5 + 5;
static const ll Mod = 1e9 + 7;
int a[MAX_N], l_g[MAX_N], r_g[MAX_N];
int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); }
int main() {
/*freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);*/
int T;
scanf("%d", &T);
while (T--) {
int n;
scanf("%d", &n);
for (int i = 0; i < n; ++i) scanf("%d", &a[i]);
l_g[0] = a[0];
r_g[n - 1] = a[n - 1];
for (int i = 1, j = n - 2; i < n && j >= 0; ++i, --j) {
l_g[i] = gcd(l_g[i - 1], a[i]); //前缀gcd
r_g[j] = gcd(r_g[j + 1], a[j]); //后缀gcd
}
int max_v = l_g[n - 1];
max_v = max(max_v, max(r_g[1], l_g[n - 2]));
for (int i = 1; i < n - 1; ++i) { //利用前后缀gcd得到去除一个数的最大值
int tem = gcd(l_g[i - 1], r_g[i + 1]);
max_v = max(max_v, tem);
}
printf("%d\n", max_v);
}
return 0;
}