emm
#include<stdio.h>
#include<string.h>
#include<queue>
#include<map>
#include<algorithm>
using namespace std;
int pre[505];
int a[505*505];
int gcd(int a,int b)
{
if(b==0)return a;
else return gcd(b,a%b);
}
int main()
{
int n;
while(~scanf("%d",&n))
{
map<int ,int >s;
for(int i=0;i<n*n;i++)scanf("%d",&a[i]),s[a[i]]++;;
sort(a,a+n*n);
reverse(a,a+n*n);
int cnt=0;
for(int i=0;i<n*n;i++)
{
if(s[a[i]]>0)
{
printf("%d ",a[i]);
s[a[i]]--;
for(int j=0;j<cnt;j++)
{
s[gcd(a[i],pre[j])]-=2;
}
pre[cnt++]=a[i];
}
}
printf("\n");
}
}