//递归算法
#include<stdio.h>
#include<iostream>
using namespace std;
void Swap(int &a,int &b){
int temp=a;a=b;b=temp;
}
void Perm(int list[],int k,int m){
if(k==m){
for(int i=0;i<=m;i++)
cout<<list[i];
cout<<endl;
}
else{
for(int i=k;i<=m;i++){
Swap(list[k],list[i]);
Perm(list,k+1,m);
Swap(list[k],list[i]);//排列后再次交换
}
}
}
int main(){
int *list;
int m;
cin>>m;
list=new int[m];//动态申请数组
for(int i=0;i<m;i++){
cin>>list[i];
}
Perm(list,0,m-1);
return 0;
}