#include <bits/stdc++.h>
using namespace std;
const int N=1e3+1,M=2e5+1;
vector<int> V[N],G[M];
vector<int> S;
int n,A[N],Nodes[N],In[M],k,m,done[N],s,ok,cnt,ans[N];
void Deco(int x,int y){
    int l=x;
    for(int i=2;i*i<=x;i++){
        if(l%i==0){
            V[y].push_back(x/i);
            G[x/i].push_back(y);
            In[x/i]++;
            Nodes[y]++;
        }
        while(l%i==0)
            l/=i;
    }
    if(l!=1){
        V[y].push_back(x/l);
        G[x/l].push_back(y);
        In[x/l]++;
        Nodes[y]++;
    }
}
void bestIn(){
    k=N,m=-1;
    for(int i=0;i<S.size();i++){
        if(In[S[i]]<k && In[S[i]]!=0){
            k=In[S[i]];
            m=S[i];
        }
    }
    if(k!=1)
        return ;
    In[m]=0;
    for(int i=0;i<G[m].size();i++){
        if(!done[G[m][i]]){
            s=G[m][i];
            break;
        }
    }
    done[s]=1;
    ans[s]=A[s]/m;
    cnt--;
    for(int i=0;i<V[s].size();i++){
        if(In[V[s][i]]>0){
            In[V[s][i]]--;
        }
    }
}
void bestNode(){
    k=N,m=-1;
    for(int i=1;i<=n;i++){
        if(Nodes[i]<k && !done[i]){
            m=i;
            k=Nodes[i];
        }
    }
    if(k==0){
        printf("-1\n");
        ok=1;
        return ;
    }
    done[m]=1;
    cnt--;
    s=0;
    for(int i=0;i<V[m].size();i++){
        if(In[V[m][i]]){
            if(!s){
                s=V[m][i];
            }
            else
                In[V[m][i]]--;
        }
    }
    In[s]=0;
    ans[m]=A[m]/s;
    for(int i=0;i<G[s].size();i++){
        if(!done[G[s][i]] && Nodes[G[s][i]]>0){
            Nodes[G[s][i]]--;
        }
    }
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",&A[i]);
        Deco(A[i],i);
    }
    for(int i=1;i<M;i++){
        if(In[i])
            S.push_back(i);
    }
    cnt=n;
    while(cnt){
        k=1;
        while(k==1 && cnt){
            bestIn();
        }
        if(cnt){
           bestNode();
           if(ok)
                return 0;
        }
    }
    for(int i=1;i<=n;i++){
        printf("%d ",ans[i]);
    }
    return 0;
}