#include <iostream>
using namespace std;
int a[100];
void dfs(int loc, int n) //loc所填的位置
{
if (loc == n) //递归终止条件,填满了
{
for (int i = 0; i<n; i++)
cout << a[i] << " ";
cout << endl;
}
for (int i = 1; i <= n; i++)
{
int flag = 1;
for (int j = 0; j<loc; j++)
{
if (a[j] == i) flag = 0; //此数已经填过了
}
if (flag == 1)
{
a[loc] = i;
dfs(loc + 1, n);
}
}
}
int main()
{
int n;
cin >> n;
dfs(0, n);
return 0;
}