class Solution {
public:
int totalNQueens(int n) {
int res = 0;
vector<int> visited(n, -1);
helper(n, 0, visited, res);
return res;
}
void helper(int n, int row, vector<int>& visited, int& res){
if(row==n) res++;
else{
for(int i=0;i<n;i++){
if(isvalid(visited, row, i)){
visited[row] = i;
helper(n, row+1, visited, res);
visited[row] = -1;
}
}
}
}
bool isvalid(vector<int>& visited, int row, int col){
if(visited[row]!=-1) return false;
for(int i=0;i<row;i++){
if(visited[i]==col || abs(visited[i]-col)==abs(i-row)) return false;
}
return true;
}
};