#include <bits/stdc++.h>
using namespace std;
int N;
int board[10][10];
int ans = 0;
// 대각선 상태: "/" 대각선, "\" 대각선
bool d1[20], d2[20];
// 좌표 배열(색깔 분리: 검은색/흰색 칸)
vector<pair<int,int>> black, white;
void dfs(int idx, int cnt, vector<pair<int,int>>& cells) {
if(idx == cells.size()) {
ans = max(ans, cnt);
return;
}
int i = cells[idx].first, j = cells[idx].second;
// 놓는 경우
if(!d1[i+j] && !d2[i-j+N-1]) {
d1[i+j] = d2[i-j+N-1] = true;
dfs(idx+1, cnt+1, cells);
d1[i+j] = d2[i-j+N-1] = false;
}
// 안 놓는 경우
dfs(idx+1, cnt, cells);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> N;
for(int i=0;i<N;i++) {
for(int j=0;j<N;j++) {
cin >> board[i][j];
if(board[i][j]==1) {
if((i+j)%2==0) black.push_back({i,j});
else white.push_back({i,j});
}
}
}
dfs(0,0,black);
int blackAns = ans;
ans = 0;
dfs(0,0,white);
int whiteAns = ans;
cout << blackAns + whiteAns << "\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgTjsKaW50IGJvYXJkWzEwXVsxMF07CmludCBhbnMgPSAwOwoKLy8g64yA6rCB7ISgIOyDge2DnDogIi8iIOuMgOqwgeyEoCwgIlwiIOuMgOqwgeyEoApib29sIGQxWzIwXSwgZDJbMjBdOwoKLy8g7KKM7ZGcIOuwsOyXtCjsg4nquZQg67aE66asOiDqsoDsnYDsg4kv7Z2w7IOJIOy5uCkKdmVjdG9yPHBhaXI8aW50LGludD4+IGJsYWNrLCB3aGl0ZTsKCnZvaWQgZGZzKGludCBpZHgsIGludCBjbnQsIHZlY3RvcjxwYWlyPGludCxpbnQ+PiYgY2VsbHMpIHsKICAgIGlmKGlkeCA9PSBjZWxscy5zaXplKCkpIHsKICAgICAgICBhbnMgPSBtYXgoYW5zLCBjbnQpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGludCBpID0gY2VsbHNbaWR4XS5maXJzdCwgaiA9IGNlbGxzW2lkeF0uc2Vjb25kOwoKICAgIC8vIOuGk+uKlCDqsr3smrAKICAgIGlmKCFkMVtpK2pdICYmICFkMltpLWorTi0xXSkgewogICAgICAgIGQxW2kral0gPSBkMltpLWorTi0xXSA9IHRydWU7CiAgICAgICAgZGZzKGlkeCsxLCBjbnQrMSwgY2VsbHMpOwogICAgICAgIGQxW2kral0gPSBkMltpLWorTi0xXSA9IGZhbHNlOwogICAgfQogICAgLy8g7JWIIOuGk+uKlCDqsr3smrAKICAgIGRmcyhpZHgrMSwgY250LCBjZWxscyk7Cn0KCmludCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKCiAgICBjaW4gPj4gTjsKICAgIGZvcihpbnQgaT0wO2k8TjtpKyspIHsKICAgICAgICBmb3IoaW50IGo9MDtqPE47aisrKSB7CiAgICAgICAgICAgIGNpbiA+PiBib2FyZFtpXVtqXTsKICAgICAgICAgICAgaWYoYm9hcmRbaV1bal09PTEpIHsKICAgICAgICAgICAgICAgIGlmKChpK2opJTI9PTApIGJsYWNrLnB1c2hfYmFjayh7aSxqfSk7CiAgICAgICAgICAgICAgICBlbHNlIHdoaXRlLnB1c2hfYmFjayh7aSxqfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZGZzKDAsMCxibGFjayk7CiAgICBpbnQgYmxhY2tBbnMgPSBhbnM7CiAgICBhbnMgPSAwOwogICAgZGZzKDAsMCx3aGl0ZSk7CiAgICBpbnQgd2hpdGVBbnMgPSBhbnM7CgogICAgY291dCA8PCBibGFja0FucyArIHdoaXRlQW5zIDw8ICJcbiI7Cn0=