import java.util.*;
import java.io.*;
import java.util.Arrays;
public class Main {

	public static void main (String [] args) throws IOException

	{
		Scanner s=new Scanner(System.in);
		PrintWriter pw=new PrintWriter(System.out);
		StringBuilder sb=new StringBuilder();

		int t=s.nextInt();
		while (t-->0)
		{

			int n=s.nextInt();
			int []a=new int[n];
			for (int i=0;i<n;i++)
				a[i]=-1*s.nextInt();
			Arrays.sort(a);
			for (int i=0; i<n;i++)
				a[i]*=-1;

			int []b=new int [n];
			b[0]=a[0];
			for (int i=1;i<n;i++)
			{
				b[i]=GCD(a[0],a[i]);
			}
			for (int i=1;i<n;i++)
			{
				for (int j=1;j<n-1;j++)
				{
					if (b[j]<b[j+1])
					{
						int temp=b[j];
						b[j]=b[j+1];
						b[j+1]=temp;

						temp=a[j];
						a[j]=a[j+1];
						a[j+1]=temp;
					}
				}
			}
			for (int i=0; i<n;i++)
				pw.print(a[i]+" ");
			pw.println();




		}
		pw.flush();
	}







	public static int GCD(int x, int y)
	{
		if (x==y)
			return x;
		else if (x>y)
			return GCD(x-y,y);
		else
			return GCD(x,y-x);
	}






	public static void shuffle(int[] a)
	{
		int n = a.length;
		for(int i = 0; i < n; i++)
		{
			int r = i + (int)(Math.random() * (n - i));
			int tmp = a[i];
			a[i] = a[r];
			a[r] = tmp;
		}
	}

	/*

	 try {
		    Thread.sleep(2000);
		} catch(InterruptedException ex) {
		    Thread.currentThread().interrupt();
		}

	 */



	static class Scanner
{
	StringTokenizer st;
	BufferedReader br;

	public Scanner(InputStream s){	br = new BufferedReader(new InputStreamReader(s));}

	public String next() throws IOException
	{
		while (st == null || !st.hasMoreTokens())
			st = new StringTokenizer(br.readLine());
		return st.nextToken();
	}

	public int nextInt() throws IOException {return Integer.parseInt(next());}

	public long nextLong() throws IOException {return Long.parseLong(next());}

	public String nextLine() throws IOException {return br.readLine();}

	public double nextDouble() throws IOException
	{
		String x = next();
		StringBuilder sb = new StringBuilder("0");
		double res = 0, f = 1;
		boolean dec = false, neg = false;
		int start = 0;
		if(x.charAt(0) == '-')
		{
			neg = true;
			start++;
		}
		for(int i = start; i < x.length(); i++)
			if(x.charAt(i) == '.')
			{
				res = Long.parseLong(sb.toString());
				sb = new StringBuilder("0");
				dec = true;
			}
			else
			{
				sb.append(x.charAt(i));
				if(dec)
					f *= 10;
			}
		res += Long.parseLong(sb.toString()) / f;
		return res * (neg?-1:1);
	}

	public boolean ready() throws IOException {return br.ready();}


}
}