#include <iostream>
#include <vector>
using namespace std;
bool isHorisontalAvailable(vector<vector<int>> &board, int i, int n) {
for(int x=0; x<n; x++) {
if(board[i][x] != 0) {
return false;
}
}
return true;
}
bool isVerticalAvailable(vector<vector<int>> &board, int j, int n) {
for(int y=0; y<n; y++) {
if(board[y][j] > 0) {
return false;
}
}
return true;
}
bool isFirstDiagonalAvailable(vector<vector<int>> &board, int i, int j, int n) {
while(i>=0 && j >=0) {
if(board[i--][j--] > 0) {
return false;
}
}
while(i<n && j<n) {
if(board[i++][j++] > 0) {
return false;
}
}
return true;
}
bool isSecondDiagonalAvailable(vector<vector<int>> &board, int i, int j, int n){
while(i>=0 && j<n) {
if(board[i--][j++] > 0) {
return false;
}
}
while(i>=0 && j<n) {
if(board[i--][j++] > 0) {
return false;
}
}
return true;
}
bool verifyIfCellAvailable(vector<vector<int>> &board, int i, int j, int n) {
return (isHorisontalAvailable(board, i, n) && isVerticalAvailable(board, j, n) &&
isFirstDiagonalAvailable(board, i, j, n) && isSecondDiagonalAvailable(board, i, j, n));
}
int getNumber(vector<vector<int>> &board, int n) {
int i;
int j;
for(i = 0; i<n; i++) {
for(j = 0; j<n; j++) {
if(board[i][j] == 0) {
bool isAvailable = isHorisontalAvailable(board, i, n);//verifyIfCellAvailable(board, i, j, n);
if(isAvailable){
board[i][j] = 1;
return 1 + getNumber(board, n);
}
}
}
}
return 0;
}
int main() {
int n = 5;
//cin>>n;
vector<vector<int>> v;
v.reserve(n);
for(int i = 0; i<n; i++) {
v[i].reserve(n);
for(int j = 0; j<n; j++) {
v[i][j]=0;
}
}
cout<<getNumber(v,n);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBpc0hvcmlzb250YWxBdmFpbGFibGUodmVjdG9yPHZlY3RvcjxpbnQ+PiAmYm9hcmQsIGludCBpLCBpbnQgbikgewogICAgICAgIGZvcihpbnQgeD0wOyB4PG47IHgrKykgewogICAgICAgICAgICBpZihib2FyZFtpXVt4XSAhPSAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cgpib29sIGlzVmVydGljYWxBdmFpbGFibGUodmVjdG9yPHZlY3RvcjxpbnQ+PiAmYm9hcmQsIGludCBqLCBpbnQgbikgewogICAgICAgIGZvcihpbnQgeT0wOyB5PG47IHkrKykgewogICAgICAgICAgICBpZihib2FyZFt5XVtqXSA+IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCmJvb2wgaXNGaXJzdERpYWdvbmFsQXZhaWxhYmxlKHZlY3Rvcjx2ZWN0b3I8aW50Pj4gJmJvYXJkLCBpbnQgaSwgaW50IGosIGludCBuKSB7CiAgICAgICAgd2hpbGUoaT49MCAmJiBqID49MCkgewogICAgICAgICAgICBpZihib2FyZFtpLS1dW2otLV0gPiAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgd2hpbGUoaTxuICYmIGo8bikgewogICAgICAgICAgICBpZihib2FyZFtpKytdW2orK10gPiAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICAKYm9vbCBpc1NlY29uZERpYWdvbmFsQXZhaWxhYmxlKHZlY3Rvcjx2ZWN0b3I8aW50Pj4gJmJvYXJkLCBpbnQgaSwgaW50IGosIGludCBuKXsKICAgICAgICB3aGlsZShpPj0wICYmIGo8bikgewogICAgICAgICAgICBpZihib2FyZFtpLS1dW2orK10gPiAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgd2hpbGUoaT49MCAmJiBqPG4pIHsKICAgICAgICAgICAgaWYoYm9hcmRbaS0tXVtqKytdID4gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgCiAgICBib29sIHZlcmlmeUlmQ2VsbEF2YWlsYWJsZSh2ZWN0b3I8dmVjdG9yPGludD4+ICZib2FyZCwgaW50IGksIGludCBqLCBpbnQgbikgewogICAgICAgIHJldHVybiAoaXNIb3Jpc29udGFsQXZhaWxhYmxlKGJvYXJkLCBpLCBuKSAmJiBpc1ZlcnRpY2FsQXZhaWxhYmxlKGJvYXJkLCBqLCBuKSAmJgogICAgICAgIGlzRmlyc3REaWFnb25hbEF2YWlsYWJsZShib2FyZCwgaSwgaiwgbikgJiYgaXNTZWNvbmREaWFnb25hbEF2YWlsYWJsZShib2FyZCwgaSwgaiwgbikpOwogICAgfQoKaW50IGdldE51bWJlcih2ZWN0b3I8dmVjdG9yPGludD4+ICZib2FyZCwgaW50IG4pIHsKCWludCBpOwoJaW50IGo7CiAgICAgICAgZm9yKGkgPSAwOyBpPG47IGkrKykgewogICAgICAgICAgICBmb3IoaiA9IDA7IGo8bjsgaisrKSB7CiAgICAgICAgICAgICAgICBpZihib2FyZFtpXVtqXSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0F2YWlsYWJsZSA9IGlzSG9yaXNvbnRhbEF2YWlsYWJsZShib2FyZCwgaSwgbik7Ly92ZXJpZnlJZkNlbGxBdmFpbGFibGUoYm9hcmQsIGksIGosIG4pOwogICAgICAgICAgICAgICAgICAgIGlmKGlzQXZhaWxhYmxlKXsKICAgICAgICAgICAgICAgICAgICAgICAgYm9hcmRbaV1bal0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMSArIGdldE51bWJlcihib2FyZCwgbik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKICAgIH0KICAgIAppbnQgbWFpbigpIHsKCWludCBuID0gNTsKCS8vY2luPj5uOwogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiB2OwogICAgdi5yZXNlcnZlKG4pOwogICAgZm9yKGludCBpID0gMDsgaTxuOyBpKyspIHsKICAgICAgICB2W2ldLnJlc2VydmUobik7CiAgICAgICAgZm9yKGludCBqID0gMDsgajxuOyBqKyspIHsKICAgICAgICAgICAgdltpXVtqXT0wOwogICAgICAgIH0KICAgIH0KICAgIGNvdXQ8PGdldE51bWJlcih2LG4pOwoJcmV0dXJuIDA7Cn0=