#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1555555;
inline ll read(){
	ll s=0,f=1;char c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-')f=-1;c=getchar();
	}
	while(c>='0'&&c<='9'){
		s=(s<<1)+(s<<3)+(c^48);c=getchar();
	}
	return f*s;
}
const int mod=998244353;
int a[1111][1111],v[1111],s[1111],n,ans[1111];
bool vis[1111];
void dfs(int x,int now){
	vis[x]=true;
	if(now==n)
	ans[now]=v[x];
//	cout<<v[x]<<" ";
	for(int i=1;i<=n;i++){
		if(vis[i]||a[x][i]<=s[now]&&now==1)continue;		
		ans[now]=v[x];
		s[now]=a[x][i];
		dfs(i,now+1);
	}
	vis[x]=false;
}
int main(){
	int T=read();
	while(T--){
		n=read();
		for(int i=1;i<=n;i++){
			v[i]=read();
			ans[i]=s[i]=0;
		}
		for(int i=1;i<=n;i++){
			for(int j=i+1;j<=n;j++){
				a[i][j]=a[j][i]=__gcd(v[i],v[j]);
//				cout<<a[i][j]<<endl;
			}
		}
		for(int i=1;i<=n;i++){
			dfs(i,1);
//			cout<<endl<<endl;
//			for(int j=1;j<=n;j++){
//				cout<<ans[j]<<" ";
//			}
//			cout<<endl;
		}
		for(int i=1;i<=n;i++){
			printf("%d ",ans[i]);
		}
		printf("\n");
	}
	return 0;
}