#include <bits/stdc++.h>
using namespace std;
multiset<int> se;
int re[555];
int gcd(int a, int b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
int main(void) {
  std::ios::sync_with_stdio(false);
  cin.tie(0);
  int i, j, n, x;
  int g;
  cin >> n;
  for (i = 0; i < n; i++)
    for (j = 0; j < n; j++) {
      cin >> x;
      se.insert(x);
    }
  for (i = 0; i < n; i++) {
    re[i] = *se.rbegin();
    se.erase(se.find(re[i]));
    for (j = 0; j < i; j++) {
      g = gcd(re[i], re[j]);
      se.erase(se.find(g));
      se.erase(se.find(g));
    }
  }
  for (i = 0; i < n; i++) {
    cout << re[i] << ' ';
  }
  return 0;
}
