#include "soccer.h"
#include<bits/stdc++.h>
using namespace std;
typedef int ll;
bool row(ll a, ll b, ll r, vector<vector<ll>> &v){
if(a <= b) for(ll i = a; i <= b; i++) if(v[r][i] != 2) return 0;
else for(ll i = b; i <= a; i++) if(v[r][i] != 2) return 0;
return 1;
}
bool col(ll a, ll b, ll c, vector<vector<ll>> &v){
if(a <= b) for(ll i = a; i <= b; i++) if(v[i][c] != 2) return 0;
else for(ll i = b; i <= a; i++) if(v[i][c] != 2) return 0;
return 1;
}
bool are_connected(ll i, ll j, ll a, ll b, vector<vector<ll>> &v){
return (row(j, b, i, v) && col(i, a, b, v)) || (col(i, a, j, v) && row(j, b, a, v));
}
ll ok(ll n, vector<vector<ll>> &v){
for(ll i = 0; i < n; i++) for(ll j = 0; j < n; j++) if(v[i][j] == 2){
for(ll a = 0; a < n; a++) for(ll b = 0; b < n; b++) if(v[a][b] == 2){
if(!are_connected(i, j, a, b, v)) return 0;
}
}
ll cnt = 0;
for(ll i = 0; i < n; i++) for(ll j = 0; j < n; j++) if(v[i][j] == 2) cnt++;
return cnt;
}
ll rec(ll i, ll j, ll n, vector<vector<ll>> &v){
if(j == n) i++, j = 0;
if(i == n) return ok(n, v);
ll ans = rec(i, j+1, n, v);
if(v[i][j] == 0){
v[i][j] = 2;
ans = max(ans, rec(i, j+1, n, v));
v[i][j] = 0;
}
return ans;
}
int biggest_stadium(int n, vector<vector<int>> f)
{
return rec(0, 0, n, f);
}