
#include <iostream>
#include <cstdio>
using namespace std;
const int N = 1005;
int n, a[N];
bool row[N], dg[N], udg[N];
int flag;
void dfs(int k) {
if(k == n) {
if(++flag > 3) return ;
for(int i = 0; i < n; i++) printf("%d ", a[i]);
printf("\n");
return ;
}
for(int i = 1; i <= n; i++) {
if(!row[i] && !dg[k + i] && !udg[n - k + i]) {
a[k] = i;
row[i] = dg[k + i] = udg[n - k + i] = true;
dfs(k + 1);
row[i] = dg[k + i] = udg[n - k + i] = false;
}
}
return ;
}
int main() {
scanf("%d", &n);
dfs(0);
printf("%d", flag);
return 0;
}