#include <bits/stdc++.h>
using namespace std;
#define SC scanf
#define PF printf
#define ull unsigned long long
#define ld long double
#define F first
#define S second
#define pb push_back
#define sort_a(a) sort(a.begin(),a.end());
#define sort_d(a) sort(a.rbegin(),a.rend());
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define rev(s) reverse(s.begin(),s.end())
#define P(ok) cout << (ok ? "YES\n": "NO\n")
#define __Heart__ ios_base :: sync_with_stdio(false); cin.tie(NULL);
#define ll long long
typedef pair< ll , ll> PII;
int gcd(int a, int b)
{
if (a == b) return a;
if (a == 0) return b;
if (b == 0) return a;
if (~a & 1)
{
if (b & 1) return gcd(a >> 1, b);
else return gcd(a >> 1, b >> 1) << 1;
}
if (~b & 1) return gcd(a, b >> 1);
if (a > b) return gcd((a - b) >> 1, b);
return gcd((b - a) >> 1, a);
}
vector<int> findDivisors(int n) {
vector<int> div;
for (int i = 1; i <= sqrt(n); ++i) {
if (n % i == 0) {
div.pb(i);
if (i != n / i) div.pb(n / i);
}
}
return div;
}
ll calc1(vector < int > even , vector < int > odd , vector < int > div , int n){
int half = n / 2 ;
ll Ans = 2LL ;
for(auto it : div){
int cnt = 0 ;
for(auto kt : odd) if(kt % it == 0) cnt++ ;
if(cnt >= half) Ans = max(Ans , (ll) it + 1) ;
for(auto i : even) if(i % it == 0) cnt++ ;
if(cnt == n) Ans = max(Ans , (ll) it + it) ;
}
return Ans ;
}
ll calc2(vector < int > even , vector < int > div , int pos ){
ll val = div[pos] , half = even.size() / 2 ;
ll Ans = val + val ;
for(int i = pos + 1 ; i < div.size() ; i++){
ll cur = div[i] , cnt = 0 ;
for(auto it : even){
if(it % cur == 0) cnt++ ;
}
if(cnt >= half) Ans = max(Ans , val + cur) ;
}
return Ans ;
}
ll calc3(vector < int > even , vector < int > odd , vector < int > div , int val){
ll Ans = val + 1 ;
for(auto it : div){
int cnt = 0 , half = even.size() / 2;
for(auto kt : odd) if(kt % it == 0) cnt++ ;
if(cnt == odd.size()){
for(auto i : even) if(i % it == 0) cnt++ ;
if(cnt >= half){
Ans = max(Ans , (ll)it + val) ;
}
}
}
return Ans ;
}
void solve()
{
int n ; cin >> n ; int a[n] ;
for(auto &x : a) cin >> x ;
sort(a , a + n) ;
vector < int > div = findDivisors(a[0]);
ll Ans = 0 , pos = -1;
for(auto cur : div){
pos++ ;
vector < int > even , odd ;
for(int i = 0 ; i < n ; i++){
if(a[i] % cur == 0){
even.pb(a[i]) ;
}
else odd.pb(a[i]);
}
vector < int > div2 ;
if(odd.size()) div2 = findDivisors(odd[0]) ;
int half = n / 2 ;
if(even.size() < half) {
Ans = max(Ans , calc1(even , odd , div2 , n)) ;
// cout <<" first con " << cur << " " << Ans << endl ;
}
else if (even.size() == half) {
ll gc = odd[0] ;
for(int i = 1 ; i < odd.size() ; i++) gc = gcd(gc , odd[i]) ;
gc += cur ;
Ans = max(Ans , gc) ;
// cout <<" Sec con " << cur << " " << Ans << endl ;
}
else if(even.size() == n ) {
Ans = max(Ans , calc2(even , div , pos)) ;
// cout <<" third con " << cur << " " << Ans << endl ;
}
else {
Ans = max(Ans , calc3(even , odd , div2 , cur)) ;
//cout <<" last con " << cur << " " << Ans << endl ;
}
}
cout << Ans << "\n" ;
}
int main()
{
__Heart__
int t ; cin >> t ; while(t--) solve() ;
}