八皇后
#include <iostream>
#include <stdio.h>
using namespace std;
int num=0,t=0;
int m[100];
int n;
void dfs(int N){
int i,j;
if(N==n){
num++;
}
else{
for(i=0;i<n;i++){ //遍历每行寻找合适位置
int s=1;
m[N]=i;
for(j=0;j<N;j++){ //判断与前几行是否冲突
if(m[N]==m[j]||m[N]-N==m[j]-j||m[N]+N==m[j]+j){
s=0;
break;
}
}
if(s){
dfs(N+1);
}
}
}
}
int main(){
int i,a[15];
for(n=1;n<=10;n++){ //打表
num=0;
dfs(0);
a[n]=num;
}
while(scanf("%d",&n)&&n!=0){
printf("%d\n",a[n]);
}
return 0;
}