#include <stdio.h>
#define N 10005
int book[N];
int a[N];
int n;
void dfs(int step)
{
if(step==n+1)//当你放到第n+1的位置上时(实际上没有这个位置),手中已经没有数字了
{
for(int i=1;i<=n;i++)
{
printf(i==n?"%d\n":"%d ",a[i]);//输出排列的数字
}
return;
}
for(int i=1;i<=n;i++)
{
if(book[i]==0)//0说明这个数字还没有被使用
{
a[step]=i;//在第step这个位置上放上数字i
book[i]=1;//标记这个数字被使用了
dfs(step+1);//递归深搜,继续往下搜索
book[i]=0;//一定记得把这个数字取消标记
}
}
return;
}
int main()
{
scanf("%d",&n);
dfs(1);//从位置1开始
getchar();
}