#include #include #include #include #include #include #include #include #include #include using ll = long long; using namespace std; int main(){ int n, mrank = 10; cin >> n; vector l(n); for (int i = 0; i < n; i++) cin >> l[i]; deque> dq; dq.push_back(l); while (!dq.empty()) { vector tmp = dq.front(); vector pt; dq.pop_front(); int mypt; bool nfill = false; for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++){ if (tmp[i][j] == '-'){ tmp[i][j] = 'o'; tmp[j][i] = 'x'; dq.push_back(tmp); tmp[i][j] = 'x'; tmp[j][i] = 'o'; dq.push_back(tmp); nfill = true; break; } } if (nfill) break; } if (nfill) continue; for (int i = 0; i < n; i++){ int cnt = 0; for (int j = 0; j < n; j++){ if (tmp[i][j] == 'o') cnt++; } pt.push_back(cnt); } mypt = pt[0]; sort(pt.begin(), pt.end(), greater()); int rank = 1, maxpt = pt[0]; for (int i = 0; i < n; i++){ if (maxpt > pt[i]){ rank++; maxpt = pt[i]; } if (mypt == pt[i]){ if (mrank > rank) mrank = rank; } } } cout << mrank << endl; }