1<br>8<br>5<br>0<br><br>
1<br>92<br>10<br><br>
#include<iostream>
#include<cmath>
using namespace std;
int x[11],N,sum;
bool place(int k){
for(int i=1;i<k;i++){
if(x[i]==x[k] || abs(k-i)==abs(x[k]-x[i]))
return false;
}
return true ;
}
void backtrack(int k){
if(k>N)
sum++;
else{
for(int i=1;i<=N;i++){
x[k]=i;
if(place(k)){
backtrack(k+1);
}
}
}
}
int main(){
int ans[11];
for(N=1;N<=10;N++){
sum=0;
backtrack(1);
ans[N]=sum;
}
while(scanf("%d",&N)!=EOF && N){
printf("%d\n",ans[N]);
}
return 0;
}