#include<bits/stdc++.h>
using namespace std;

const int N=2005;

int gcd(int a,int b)
{
	return !b?a:gcd(b,a%b);
}

int n,a[N],in[N];
vector<int> G[N],E[N];
bool v[N];
priority_queue<int> Q;

void DFS(int x)
{
	v[x]=true;
	for(auto &y:G[x])
		if(!v[y])
		{
			E[x].push_back(y);
			in[y]++;
			DFS(y);
		}
}

int main()
{
	scanf("%d",&n);
	for(int i=1; i<=n; i++)
		scanf("%d",&a[i]);
	sort(a+1,a+1+n);
	for(int i=1; i<=n; i++)
		for(int j=i+1; j<=n; j++)
			if(gcd(a[i],a[j])!=1)
				G[i].push_back(j),G[j].push_back(i);
	for(int i=1; i<=n; i++)
		if(!v[i])
			DFS(i);
	memset(v,0,sizeof(v));
	for(int i=1; i<=n; i++)
		if(!in[i])
		{
			Q.push(i);
			v[i]=true;
		}
	while(!Q.empty())
	{
		int x=Q.top();
		Q.pop();
		printf("%d ",a[x]);
		for(auto &y:E[x])
			if(!v[y])
			{
				if(!--in[y])
				{
					Q.push(y);
					v[y]=true;
				}
			}
	}
	return 0;
}