题目来源:https://codeforces.com/contest/1176/problem/D
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define PB push_back
#define endl '\n'
#define PII pair<int,int>
#define FI first
#define SE second
#define POP pop_back
const int N=4e6;
const int INF=1e8,mod=1e7+7;
int n,m,k;
vector<int>v;
int f[N<<1];
int ff[N<<1];
int s[N<<1];
int a[N];
int p,q;
int b[N],c[N];
int ss[N];
int main()
{
for(int i=2;i<=N;i++){
if(!f[i]){
v.PB(i);
}
for(int j=i*2;j<=N;j+=i){
f[j]=i;
}
}
//cout<<v.size();
cin>>n;
int cct=0,cot=0;
for(int i=1;i<=n*2;i++){
scanf("%d",&a[i]);
if(f[a[i]])b[cct++]=a[i];
else c[cot++]=a[i];
}
sort(b,b+cct);
for(int i=cct-1;i>=0;i--){
if(s[b[i]])s[b[i]]--;
else{
printf("%d ",b[i]);
s[f[b[i]]]++;
}
}
sort(c,c+cot);
for(int i=0;i<cot;i++){
if(s[c[i]])s[c[i]]--;
else{
printf("%d ",c[i]);
//cout<<c[i]<<' '<<v[c[i]-1]<<endl;
if(c[i]<=199999)
s[v[c[i]-1]]++;
}
}
return 0;
}