

import java.util.*;

import java.io.*;

public class Cftrial {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		int t=Integer.parseInt(br.readLine());
		while(t--!=0) {
			// it's just a trial don't judge me :-}
			int n=Integer.parseInt(br.readLine());
			int a[]=new int[n];
			String s[]=br.readLine().split(" ");
			int max=0;
			for(int i=0;i<n;i++) {
				a[i]=Integer.parseInt(s[i]);
				max=Math.max(a[i], max);
			}
			LinkedList<Integer> b=new LinkedList<Integer>();
			
			LinkedList<Integer> c=new LinkedList<>();
			//Arrays.sort(a);
			for(int i=0;i<n;i++) {
				ins(gcd(a[i],max),b,c,a[i],max);
				
			}
			for(Integer g: b) {
				System.out.print(g+" ");
			}
			System.out.println();
		}

	}
	
	public static void ins(int e,LinkedList<Integer>b,LinkedList<Integer>c,int n,int max) {
		boolean flag=false;
		if(e==max || n==max) {
			b.add(0,max);
			c.add(0,max);
		}
		else {
			for(int i=0;i<c.size();i++) {
				if(e==c.get(i)) {
					c.add(e);
					b.add(n);
					flag=true;
					break;
				}
				if(e>c.get(i)) {
//					System.out.println(e+" "+c.get(i)+" "+i);
					if(i==0 && (c.get(0)!=max)) {
						c.add(0,e);
						b.add(0,n);
					}
					else {
						c.add(i,e);
						b.add(i,n);
					}
					flag=true;
					break;
				}
			}
			if(!flag) {
				//System.out.println(e+" "+n);
				c.add(e);
				b.add(n);
			}
			
			//System.out.println(b+" "+c);
		}
	}
	
	public static int gcd(int a, int b) {
		if(a==0) return b;
		if(b==0) return a;
		if(a==b) return a;
		if(a>b) return gcd(a-b,b);
		return gcd(a,b-a);
	}

}
