#include <cstdio>
using namespace std;
int n, val[10], v[10];
void dfs(int x) {
if (x > n) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (v[j] == i) {
printf("%d ", val[j]);
break;
}
}
}
printf("\n");
return;
}
for (int i = 1; i <= n; i++) {
if (!v[i]) {
v[i] = x; // 直接用x作为访问标记
dfs(x + 1);
v[i] = 0; // 恢复访问标记
}
}
}
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &val[i]);
}
dfs(1); // 从1开始递归
return 0;
}
/**************************************************************
Problem: 1685
User: admin
Language: C++
Result: Wrong Answer
****************************************************************/