#include<iostream>
#include<cstdio>
using namespace std;
const int N=10;
int n;
int a[N]; //用来记录排列数字
bool s[N*N]; //用来标记1到n中的数字是否被用过
void dfs(int x)
{
if(x==n) //当x==n时 表明n-1位置已经填过数字 即一个序列完成 输出它
{
for(int i=0;i<n;i++) printf("%d ", a[i]);
cout<<endl;
}
else
{
for(int i=1;i<=n;i++) //否则从1到n中选择一个没有标记的数字填入 并填下一个格子
{
if(!s[i])
{
a[x]=i;
s[i]=true;
dfs(x+1);
s[i]=false;
}
}
}
}
int main()
{
cin>>n;
dfs(0);
return 0;
}