#include <iostream>
const int N = 4;
bool isSafe(int row, int col, int placement[N]) {
for (int i = 0; i < row; ++i) {
if (placement[i] == col || placement[i] - col == i - row || placement[i] - col == row - i) {
return false;
}
}
return true;
}
void solveNQueens(int row, int n, int placement[N], int& count) {
if (row == n) {
++count;
return;
}
for (int col = 0; col < n; ++col) {
if (isSafe(row, col, placement)) {
placement[row] = col;
solveNQueens(row + 1, n, placement, count);
}
}
}
int main() {
int placement[N] = {0};
int count = 0;
solveNQueens(0, N, placement, count);
std::cout << "Number of solutions: " << count << std::endl;
return 0;
}