class Solution {
public:
#define N 30
int A[N] = {0};
int max;
int sum;
int canput( int k )
{
for( int i = 1; i < k; i++ )
if( A[i] == A[k] || abs(i-k) == abs(A[i]-A[k]) )
return 0;
return 1;
}
int queen( int t )
{
if( t > max )
sum++;
for( int i = 1; i <= max; i++ )
{
A[t] = i;
if( canput(t) )
{
queen(t+1);
}
}
return sum;
}
int totalNQueens(int n) {
max = n;
sum = 0;
return queen(1);
}
};