#include<bits/stdc++.h>
using namespace std;
//若定义为全局变量,初值一定为0
//局部变量,为随机值
const int N=10;
int n;
int st[N]; //0表示还没有放数,1-n表示放了哪个数
bool used[N];//true表示用过,false表示还没有用过
//字典序的比较问题
//正常从小到大找就行
void dfs(int u){
if(u>n){//枚举完了
for(int i=1;i<=n;i++){
printf("%d ",st[i]);//打印方案
}
puts("");//表示只换行
return;
}
for(int i=1;i<=n;i++){
if(!used[i]){
st[u]=i;
used[i]=true;
dfs(u+1);
//恢复现场
st[u]=0;
used[i]=false;
}
}
}
int main(){
//scanf("%d", &n);,用于从用户输入读取一个整数并存储到变量 n 中。
scanf("%d", &n);
dfs(1);
return 0;
}