#include<bits/stdc++.h>
using namespace std;
const int N=19;
int st[N];//0代表还没考虑,1带标选,2代表不选;
int n;
int a[N];
void dfs(int u){
if(u==n+1){
for(int i=1;i<=n;i++)
if(st[i]==1)
cout<<a[i]<<' ';
cout<<endl;
return ;
}
//由于存在重复的数,用循环找到下一个不同的数,标记选或是不选
int k=u;
while(k<=n&&a[u]==a[k])k++;
/* for(int i=u;i<k;i++){
st[i]=2;
dfs(k);//这k个数都不选
}
for(int i=u;i<k;i++)
st[i]=0;//恢复现场
*/
//可以合并成一步
st[k]=2;
dfs(k);
st[k]=0;
for(int i=u;i<k;i++){
st[i]=1;
dfs(k);//都选;
}
for(int i=u;i<k;i++)
st[i]=0;//恢复现场
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+1+n);
dfs(1);
return 0;
}