#include<iostream>
#include<vector>
using namespace std;
int dx[8] = { -1,-1,-1,0,0,1,1,1 };
int dy[8] = { -1,0,1,-1,1,-1,0,1 };
int tot = 0;
void put_queen(int x, int y, int n, vector<vector<int>>& attack)
{
for (int i = 1; i < n; i++)
for (int j = 0; j < 8; j++)
if (x + i * dx[j] <= n - 1 && x + i * dx[j] >= 0 && y + i * dy[j] <= n - 1 && y + i * dy[j] >= 0)
attack[x + i * dx[j]][y + i * dy[j]] = 1;
}
void backtrack(int k, int n, vector<vector<int>>& attack, vector<int>& queen)
{
if (k == n)
{
tot++;
if (tot <= 3)
for (int i = 0; i < n; i++)
{
cout << queen[i] + 1 << " ";
if (i == n - 1)cout << endl;
}
return;
}
for (int i = 0; i < n; i++)
{
if (attack[k][i] == 0)
{
vector<vector<int>>temp = attack;
queen[k] = i;
attack[k][i] = 1;
put_queen(k, i, n, attack);
backtrack(k + 1, n, attack, queen);
attack = temp;
queen[k] = -1;
}
}
}
int main()
{
int n;
cin >> n;
vector<vector<int>>attack(n, vector<int>(n));
vector<int>queen(n, -1);
backtrack(0, n, attack, queen);
cout << tot;
}