#include <iostream>
using namespace std;

int n;
int vis[10]{0};

//c++引用传递需要显示指定为int *a,使用reference需要显示指定数组大小,所以可以使用指针方便一些
//相对于Java,可以使用&int修改int的值
void dfs(int deep, int *a) {
	if (n + 1 == deep) {
		for (int i = 1; i <= n; i++) {
			cout << a[i] << " ";
		}
		cout << endl;
	}
	for (int i = 1; i <= n; i++) {
		if (!vis[i]) {
			vis[i] = 1;
			a[deep] = i;
			//一开始没注意把deep + 1写成n + 1找了半天
		  	dfs(deep + 1, a);
			vis[i] = 0;
			a[deep] = 0; 
		}
	}
	//回溯的部分 
}

int main() {
    cin >> n;
    int a[10]{0};
    dfs(1, a);
}