#include <bits/stdc++.h>
const int maxn = (int)1e6;
const int mod = (int)1e9 + 7;
using namespace std;
int n;
int a[maxn];
vector<int> ans;
map<int, int> m;
int gcd(int a, int b) {
  if (!b)
    return a;
  else
    return gcd(b, a % b);
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n * n; i++) {
    scanf("%d", &a[i]);
    m[a[i]]++;
  }
  sort(a, a + n * n);
  for (int i = n * n - 1; i >= 0; i--) {
    if (m[a[i]] > 0) {
      for (int j = 0; j < ((int)(ans).size()); j++) {
        m[gcd(a[i], ans[j])] -= 2;
      }
      ans.push_back(a[i]);
      m[a[i]]--;
    }
  }
  reverse(ans.begin(), ans.end());
  for (int i = 0; i < ((int)(ans).size()); i++) {
    cout << ans[i] << " ";
  }
  return 0;
}
