//N皇后问题
//N*N的棋盘,放N个皇后,要求不同行,不同列,不在对角线上
//求有多少中放置方法
//
#include"stdio.h"
#include"string.h"
#include"math.h"
#define N 12
int A[N];
int T[N];
int ans;
int n;
int judge(int x)
{
int i;
//判断前面受否有与其同列或同对角线
for(i=1;i<x;i++)
{
if(T[i]==T[x]||abs(i-x)==abs(T[i]-T[x]))return 0;
}
return 1;
}
//找第t行的皇后放在什么位置即哪列
void dfs(int t)
{
int i;
if(t>n)ans++;
else
{
for(i=1;i<=n;i++)
{
T[t]=i;//第t个数放在第i列
if(judge(t))
dfs(t+1);
}
}
}
int main()
{
int i;
for(i=1;i<=N;i++)
{
ans=0;
n=i;
memset(T,0,sizeof(T));
dfs(1);
A[i]=ans;
}
while(scanf("%d",&n)!=-1&&n)
printf("%d\n",A[n]);
return 0;
}