1 #include<iostream> 2 #include<stdio.h> 3 using namespace std; 4 int N,sum; 5 int m[11][11]; 6 int isok(int x,int y) 7 { 8 for(int i=0;i<=x;i++) 9 if(m[i][y]==1)return 0; 10 for(int i=0;i<N;i++) 11 if(m[x][i]==1)return 0; 12 for(int i=x,j=y;i>=0&&j<N;i--,j++) 13 if(m[i][j]==1)return 0; 14 for(int i=x,j=y;i>=0&&j>=0;i--,j--) 15 if(m[i][j]==1)return 0; 16 return 1; 17 } 18 int dfs(int x,int y,int n) 19 { 20 if(n==0) 21 { 22 sum++; 23 return 1; 24 } 25 x++; 26 for(int j=0;j<N;j++) 27 if(isok(x,j)) 28 { 29 m[x][j]=1; 30 n--; 31 dfs(x,j,n); 32 n++; 33 m[x][j]=0; 34 } 35 } 36 int init() 37 { 38 for(int i=0;i<11;i++) 39 for(int j=0;j<11;j++) 40 m[i][j]=0; 41 } 42 int main() 43 { 44 int a[11]; 45 for(int i=1;i<11;i++) 46 { 47 sum=0; 48 init(); 49 N=i; 50 dfs(0,0,i); 51 a[i]=sum; 52 //cout<<i<<"="<<a[i]<<endl; 53 } 54 while(cin>>N,N) 55 cout<<a[N]<<endl; 56 return 0; 57 }