#include<bits/stdc++.h>
#define ll long long int
using namespace std;
bool isp(long long int n)
{
    if(n>2 && n%2==0)
    {
        return false;
    }
    for(int i=3;i<=sqrt(n);i+=2)
    {
        if(n%i==0)
        {
            return false;
        }
    }
    return true;
}
void seive(long long int n){
bool a[n+1];
memset(a,true,sizeof(a));
a[1]=false;
for(int i=2;i<=sqrt(n);i++){
    if(a[i]==true)
    {
        for(int j=i*i;j<=n;j+=i)
        {
            a[j]=false;
        }
    }
}
for(int i=2;i<=n;i++)
{
    if(a[i])
        cout<<i<<" ";
}
}
long long int gcd(long long int a,long long int b)
{
    return __gcd(a,b);
}
long long int lcm(long long int a,long long int b)
{
    if(a!=0 || b!=0)
    {
        return gcd(a,b)/a*b;
    }
}
ll fac(ll n){
ll pro=1;
while(n>1)
{
    pro*=n;
    n--;
}
return pro;
}
bool sortbysec(const pair<int,int> &a,
              const pair<int,int> &b)
{
    return (a.second < b.second);
}
int main() {
	ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int t;
   cin>>t;
   // t=1;
   while(t--){
        int n;
        cin>>n;
        ll a[n];
        ll mid=0,mi=0;
        for(int i=0;i<n;i++)
            {   cin>>a[i];
                if(a[i]>mi)
                {
                    mid=i;
                    mi=a[i];
                }
            }
        ll b[n];
        b[0]=a[mid];
        a[mid]=0;
        for(int j=1;j<n;j++){
                int mx=0,in=0;
         for(int i=0;i<n;i++)
           {
               if(a[i] && gcd(a[i],b[0])>mx){
                   mx=gcd(a[i],b[0]);
                   in=i;
               }
               
           }
           b[j]=a[in];
           a[in]=0;
         }
         for(int i=0;i<n;i++)
            cout<<b[i]<<" ";
        cout<<"\n";
   }
  }
