#include<bits/stdc++.h>
using namespace std;
int n,val[10],v[10],f[10];//val值 visit f是存放打印的下标
//val 2 4 6
//f 1 2 3
// 1 3 2
void dfs(int x){
if(x>n){//x超出N代表都选择完毕
for(int i=1;i<=n;i++) printf("%d ",val[f[i]]);
printf("\n");
return;
}
for(int i=1;i<=n;i++){
if(v[i]==0){//只有没访问过才能访问
f[x]=i;//增加这个i到f打印去
v[i]=1;//设为访问过
dfs(x+1);
v[i]=0; //取消设为访问过
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>val[i];
dfs(1);//起点是1 因为x等下要和f下标有关系。我们为了让数组从1开始
}
/**************************************************************
Problem: 1685
User: admin
Language: C++
Result: Wrong Answer
****************************************************************/