#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <map>
#include <string>
#include <vector>
#include <queue>
using namespace std;
 
int test;
vector<int> v;
vector<int> choice;
vector<int> reserve;
 
// 유클리드 호제법 
int gcd(int a, int b)
{
    if(b == 0)
    {
        return a;
    }
    else
    {
        return gcd(b, a%b);
    }
}
 
void DFS(int idx, int cnt)
{
    if(cnt == 2)
    {
        int GCD = gcd(choice[0], choice[1]);
        
        reserve.push_back(GCD);
        
        return;
    }
    
    for(int i = idx; i < v.size(); i++)
    {
        choice.push_back(v[i]);
        DFS(i+1, cnt+1);
        choice.pop_back();
    }
}
 
int main(void)
{
//    freopen("B9613_input.txt", "r", stdin);
    
    cin >> test;
    
    for(int T = 1; T <= test; T++)
    {
        v.clear();
        reserve.clear();
        
        int N;
        cin >> N;
        
        for(int i = 1; i <= N; i++)
        {
            int num;
            cin >> num;
            
            v.push_back(num);
        }
        
        DFS(00);
        
        long long sum = 0;
        for(int i = 0; i < reserve.size(); i++)
        {
            sum += reserve[i];
        }
        
        cout << sum << endl;
    }
    
    return 0;
}
cs

+ Recent posts