#include
using namespace std;
const int N=10;
bool st[N];//判断当前数字是否被使用过
int path[N];//存放当前方案
int n;
void dfs(int u)
{
if(u==n)
{
for(int i=0;i<n;i++) cout<<path[i]<<' '; // 输出排列
cout<<endl;
return;
}
for(int i=1;i<=n;i++)//枚举每个数字
{
if(!st[i])//如果这个数字没有被使用过
{
path[u]=i;//选择这个数字
st[i]=true;//将这个数字标记为使用过
dfs(u+1);//继续搜索下一个数字
st[i]=false;//回溯,将这个数字的使用状态恢复
}
}
}
int main()
{
cin>>n;
dfs(0);//从第0个位置开始搜索
return 0;
}