#include<bits/stdc++.h>
using namespace std;
int n;
int a[1000]; //a[i]表示第i个盒子放了哪一个球
int v[1000]; //v[i]表示第i个球是否在手里面
void dfs(int cur) //当面临第cur个盒子时,放置球的情况
{
if(cur == n + 1) // 递归出口
{
//输出这组解
for(int i = 1; i <= n; i++)
cout << a[i] << ' ';
printf("\n");
return;
}
for(int i = 1; i <= n; i++)
{
if(v[i]==0) //球没有放置在盒子里面
{
a[cur] = i; //球放进盒子里面
v[i] = 1; //标志为1表示已放置
dfs(cur + 1);//当面临下一个盒子,放置球的情况
v[i] = 0; //将值回收以回溯
}
}
}
int main()
{
scanf("%d", &n);
dfs(1);
return 0;
}