#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e3 + 10;
int arr[maxn];
int vis[maxn], ans[maxn];
int n;
int gcd(int a, int b) {
  if (a < b) swap(a, b);
  return b == 0 ? a : gcd(b, a % b);
}
int main() {
  int T;
  scanf("%d", &T);
  while (T--) {
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) {
      scanf("%d", &arr[i]);
      ++vis[arr[i]];
    }
    sort(arr + 1, arr + 1 + n, [](int a, int b) { return a > b; });
    ans[1] = arr[1];
    int com = arr[1];
    --vis[arr[1]];
    for (int i = 2; i <= n; i++) {
      int maxi = -1, maxnum;
      for (int j = 1; j <= n; j++) {
        if (vis[arr[j]]) {
          int tmp = gcd(arr[j], com);
          if (maxi < tmp) {
            maxi = tmp;
            maxnum = arr[j];
          }
        }
      }
      ans[i] = maxnum;
      com = maxi;
      --vis[maxnum];
    }
    for (int i = 1; i <= n; i++) {
      printf("%d%c", ans[i], i == n ? '\n' : ' ');
    }
  }
  return 0;
}
