#include <stdio.h> #include <math.h> int sum, N, map[20], a[15]; /*int place(int k) { for(int i = 1; i < k; i++) { if(abs(k-i) == abs(map[k]-map[i]) || map[i] == map[k]) return 0; } return 1; }*/ void dfs(int x) { int i, j; if(x > N) { sum++; return ; } for( i = 1; i <= N; i++) { int flag = 1; map[x] = i; /*if(place(x)) dfs(x+1); */ for( j = 1; j < x; j++) { if( i == map[j] || abs(map[j]-i) == abs(j-x) ) //if(i==map[j] || j+map[j]==i+x || map[j]-j==i-x) { flag = 0; break; } } if(flag) dfs(x+1); } } int main() { //int t; for(N = 1; N <= 10; N++) { sum = 0; dfs(1); a[N] = sum; } while(~scanf("%d", &N), N) { /* sum = 0; dfs(1); //t = sum;*/ printf("%d ",a[N]); } return 0; }