#include <stdio.h>
int z = 0, n, d[15][15] = {};
void pr(int k[15][15]){
z++;
if(z > 3) return;
for(int i = 1; i < n + 1 ; i++){
for(int j = 1; j < n + 1 ; j++){
if(k[i][j] == 2)
printf("%d ", j);
}
}
printf("\n");
}
void f(int a, int b, int k[15][15]){
// printf("ff: %d %d\n", a, b);
for(int i = 1; i < n + 1 ; i++){
// printf("fins1: %d %d\n", i, n);
k[a][i] = 1;
k[i][b] = 1;
if(1 <= i + a - b && i + a - b <= n)
k[i + a - b][i] = 1;
if(1 <= a + b - i && a + b - i <= n)
k[a + b - i][i] = 1;
}
k[a][b] = 2;
int p = 0;
for(int i = 1 ; i < n + 1 ; i++){
int qw = 0;
for(int j = 1; j < n + 1 ; j++){
if(k[i][j] == 2){
p++;
qw = 1;
}
else if(k[i][j] == 0){
qw = 1;
}
}
if(p != i) break;
if(qw == 0) return;
}
// printf("before goto pr:%d %d\n", p, n);
if(p == n){
// printf("goto pr\n");
pr(k);
return;
}
// printf("checkit a: %d %d\n", a, n);
if(a == n) return;
for(int i = 1; i < n + 1 ; i++){
if(k[a + 1][i] == 0){
int l[15][15];
dd(l, k);
f(a + 1, i, l);
}
}
}
void g(){
for(int i = 1; i < n + 1 ; i++){
for(int j = 1; j < n + 1 ; j++){
d[i][j] = 0;
}
}
}
void dd(int l[15][15], int k[15][15]){
for(int i = 0; i < 15 ; i++){
for(int j = 0; j < 15 ; j++){
l[i][j] = k[i][j];
}
}
}
int main()
{
scanf("%d", &n);
if(n % 2 == 0){
for(int i = 1; i < (n + 2)/2 ; i++){
// printf("%d %d\n", i, n);
f(1, i, d);
g();
}
if(z <= 3){
for(int i = (n + 2)/2 ; i < n + 1 ; i++){
f(1, i, d);
g();
}
printf("%d", z);
}
else printf("%d", 2 * z);
}
else{
for(int i = 1; i < (n + 2)/2 ; i++){
f(1, i, d);
g();
}
int op = z;
f(1, (n + 2)/2, d);
printf("%d", op + z);
}
return 0;
}
//#include<stdio.h>
//
//void part(int vv[15][15]) {
// vv[2][2] = 9;
//}
//
//void sending(int vv[15][15]){
//
// for(int i=0; i<5; i++) {
// for(int j=0; j<5; j++) {
// printf("%d ", vv[i][j]);
// }
// printf("\n");
// }
// part(vv);
// for(int i=0; i<5; i++) {
// for(int j=0; j<5; j++) {
// printf("%d ", vv[i][j]);
// }
// printf("\n");
// }
//}
//int main() {
// int arr[15][15] = {{1,2,3,4,5}, {2,3,4,5,6}};
//
// sending(arr);
//
//}
import copy
def f(a, b, k):
global n
for i in range(n + 1):
k[a][i] = 1
k[i][b] = 1
if 1 <= i + a - b <= n:
k[i + a - b][i] = 1
if 1 <= a + b - i <= n:
k[a + b - i][i] = 1
k[a][b] = 2
p = 0
for i in range(1, n + 1, 1):
qw = 0
for j in range(1, n + 1, 1):
if k[i][j] == 2:
p += 1
qw = 1
elif k[i][j] == 0:
qw = 1
if p != i:
break
if qw == 0:
return
if p == n:
pr(k)
return
if a == n:
return
for i in range(1, n + 1, 1):
if k[a + 1][i] == 0:
l = copy.deepcopy(k)
f(a + 1, i, l)
def g():
for i in range(n + 1):
for j in range(n + 1):
d[i][j] = 0
def pr(k):
global z
z += 1
if z > 3:
return
for i in range(1, n + 1, 1):
for j in range(1, n + 1, 1):
if k[i][j] == 2:
print(j, end=' ')
print()
n = int(input())
d = []
z = 0
for i in range(n + 1):
v = [0] * (n + 1)
d.append(v)
if n % 2 == 0:
for i in range(1, (n + 2) // 2, 1):
f(1, i, d)
g()
if z <= 3:
for i in range((n + 2) // 2, n + 1, 1):
f(1, i, d)
g()
print(z)
else:
print(2 * z)
else:
for i in range(1, (n + 2) // 2, 1):
f(1, i, d)
g()
op = z
f(1, (n + 2) // 2, d)
print(op + z)
'''
6 4 36
7 40 52
8 92 260
9 352 372
10 724 1956
11 2680 11520
12 14200 59512
13 73712
'''