#include <iostream>
using namespace std;
int show(int array[10][10], int n)
{
/*for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cout << array[i][j];
}
cout << endl;
}
cout << endl;*/
return 0;
}
int fill(int array[10][10], int x, int y, int n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (x == i && y == j)
{
continue;
}
if (x == i || y == j || abs(x - i) == abs(y - j))
{
array[i][j]++;
}
}
}
return 0;
}
int delite(int array[10][10], int x, int y, int n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (x == i && y == j)
{
array[i][j] = 1;
}
if (x == i || y == j || abs(x - i) == abs(y - j))
{
array[i][j]--;
}
}
}
return 0;
}
int funk (int array[10][10],int n,int x,int y,int sum){
for (int i = 0; i < n; i++)
{
if (array[x][i]==0)
{
if (x==n-1)
{
sum = sum + 1;
continue;
}
fill(array, x, i, n);
show(array, n);
sum=funk(array, n, x+1, i,sum);
}
}
if (x==0)
{
return sum;
}
delite(array, --x, y, n);
show(array, n);
return sum;
}
int main()
{
int arr[10][10]{};
int sum{ 0 };
int n;cin >> n;
cout<<funk(arr, n,0,0,sum)<<endl;
show(arr, n);
}