#include<bits/stdc++.h>
using namespace std;
const int nn=20;
int n;
int order[nn];
bool chosen[nn];
inline void cal(int k)
{
if(k==n+1)
{
for(int i=1;i<=n;++i)
cout<<order[i]<<' ';
cout<<endl;
}
for(int i=1;i<=n;++i)
{
if(chosen[i]) continue;
//1.选择这个点作为第k个点
chosen[i]=true;
order[k]=i;
cal(k+1);
//不选择这个点作为第k个点,系统将会直接跳过这个点,有待于下一次的查找
chosen[i]=false;
order[k]=0;
}
}
int main()
{
cin>>n;
cal(1);
return 0;
}