// ROOT : DRAGON3012009
#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define el "\n"
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define __ROOT__ int main()
#pragma GCC optimize("O2")
//#pragma GCC optimize("unroll-loops")
//#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
#define FOR(i,l,r) for(int i = l ; i <= r ; i ++)
#define FORD(i,r,l) for(int i = r ; i >= l ; i --)
#define REP(i, a ) for(int i = 0 ; i < a ; i ++ )
#define fi first
#define se second
#define M 1000000007
#define MAXN 1000001
#define INF (1ll<<31)
#define BLOCK_SIZE 425
#define MAX_NODE 1001001
#define LOG 19
#define ALPHA_SIZE 26
#define BASE 311
#define NAME "file"
#define compare(v) sort((v).begin(), (v).end()); (v).erase(unique((v).begin(), (v).end()), (v).end());
using namespace std;
using namespace chrono ;
const ll MOD[] = {(ll)1e9 + 2277, (ll)1e9 + 5277, (ll)1e9 + 8277, (ll)1e9 + 9277, (ll) 1e9 + 7 };
const ll NMOD = 1;
const int dx[] = {-1, 0, 1,0};
const int dy[] = {0, 1, 0, -1};
//**Variable**//
ll n, low, high, ans;
ll arr[201][201];
ll d[MAXN] ;
vector<ll> adj[MAXN] ;
ll curPos[MAXN] ;
//**Struct**//
struct Edge {
ll u, v, flow, capa ;
Edge() {
u = v = flow = capa = 0 ;
}
Edge(ll _u, ll _v, ll _flow, ll _capa) {
u = _u, v = _v, flow = _flow, capa = _capa ;
}
ll flowExit() {
return capa - flow ;
}
} edge[MAXN];
bool bfs(ll start ) {
FOR(i, 0, 2*n + 1 ) d[i] = INF ;
d[start] = 0 ;
queue<ll> q;
q.push(start ) ;
while(!q.empty()) {
ll u = q.front() ;
q.pop() ;
for(ll id : adj[u]) {
ll v = edge[id].v ;
if(d[v] != INF || !edge[id].flowExit()) continue ;
d[v] = d[u] + 1 ;
q.push(v) ;
}
}
return d[2*n+1] != INF ;
}
ll dfs(ll u, ll curFlow) {
if(u == 2*n + 1 ) return curFlow ;
if(curFlow == 0) return curFlow ;
for(; curPos[u] < adj[u].size() ; curPos[u] ++ ) {
ll id = adj[u][curPos[u]] ;
ll v = edge[id].v ;
if(d[v] != d[u] +1 || !edge[id].flowExit()) continue ;
ll delta = dfs(v, min(curFlow, edge[id].flowExit())) ;
if(delta == 0 ) continue ;
edge[id].flow += delta ;
edge[id^1].flow -= delta ;
return delta ;
}
return 0 ;
}
//**Function**//
template<class X, class Y >
bool minimize(X & x, const Y &y ) {
return x > y ? x = y, 1:0 ;
}
template<class X, class Y >
bool maximize(X &x, const Y &y ) {
return x < y ? x = y, 1:0 ;
}
void init() {
cin>>n;
low = INF ;
FOR(i,1, n) {
FOR(j, 1, n ) {
cin >> arr[i][j] ;
maximize(high, arr[i][j]) ;
minimize(low, arr[i][j] ) ;
}
}
}
bool check(ll m ) {
ll cnt = 0, maxFlow = 0 ;
FOR(i, 1, n ) {
edge[cnt<<1] = Edge(0, i, 0, 1) ;
edge[cnt<<1|1] = Edge(i, 0, 0, 0 ) ;
adj[0].push_back(cnt<<1 ) ;
adj[i].push_back(cnt<<1|1) ;
cnt ++ ;
}
FOR(i, n+1, 2 * n ) {
edge[cnt<<1] = Edge(i, 2 * n+ 1, 0, 1) ;
edge[cnt<<1|1] = Edge(2*n+1, i, 0, 0 ) ;
adj[i].push_back(cnt<<1) ;
adj[2*n+1].push_back(cnt<<1|1) ;
cnt ++ ;
}
FOR(i, 1, n ) FOR(j, 1,n ) {
if(arr[i][j] <= m ) {
edge[cnt << 1 ] = Edge(i, j+n, 0, 1 ) ;
edge[cnt<<1|1] = Edge(j+n, i, 0, 0) ;
adj[i].push_back(cnt<<1) ;
adj[j+n].push_back(cnt<<1|1) ;
cnt ++ ;
}
}
while(bfs(0)) {
FOR(i, 0, 2 * n + 1 ) curPos[i] = 0 ;
while(int x = dfs(0, INF)) maxFlow += x;
}
FOR(i, 0, 2*n + 1 ) adj[i].resize(0) ;
return maxFlow == n ;
}
void solve() {
while(low<= high ) {
ll m = low + high >> 1;
if(check(m) ) {
ans = m ;
high= m -1 ;
} else low = m + 1 ;
}
cout << ans ;
}
__ROOT__ {
// freopen(NAME".inp" , "r" , stdin);
// freopen(NAME".out" , "w", stdout) ;
fast;
int t = 1; // cin >> t ;
while(t--) {
init();
solve();
}
return (0&0);
}
Ly8gUk9PVCA6IERSQUdPTjMwMTIwMDkKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBlbCAiXG4iCiNkZWZpbmUgZmFzdCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKI2RlZmluZSBfX1JPT1RfXyBpbnQgbWFpbigpCiNwcmFnbWEgR0NDIG9wdGltaXplKCJPMiIpCi8vI3ByYWdtYSBHQ0Mgb3B0aW1pemUoInVucm9sbC1sb29wcyIpCi8vI3ByYWdtYSBHQ0MgdGFyZ2V0KCJhdngyLGJtaSxibWkyLHBvcGNudCxsemNudCIpCiNkZWZpbmUgRk9SKGksbCxyKSBmb3IoaW50IGkgPSBsIDsgaSA8PSByIDsgaSArKykKI2RlZmluZSBGT1JEKGkscixsKSBmb3IoaW50IGkgPSByIDsgaSA+PSBsIDsgaSAtLSkKI2RlZmluZSBSRVAoaSwgYSApIGZvcihpbnQgaSA9IDAgOyBpIDwgYSA7IGkgKysgKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgTSAxMDAwMDAwMDA3CiNkZWZpbmUgTUFYTiAxMDAwMDAxCiNkZWZpbmUgSU5GICgxbGw8PDMxKQojZGVmaW5lIEJMT0NLX1NJWkUgNDI1CiNkZWZpbmUgTUFYX05PREUgMTAwMTAwMQojZGVmaW5lIExPRyAxOQojZGVmaW5lIEFMUEhBX1NJWkUgMjYKI2RlZmluZSBCQVNFIDMxMQojZGVmaW5lIE5BTUUgImZpbGUiCiNkZWZpbmUgY29tcGFyZSh2KSBzb3J0KCh2KS5iZWdpbigpLCAodikuZW5kKCkpOyAodikuZXJhc2UodW5pcXVlKCh2KS5iZWdpbigpLCAodikuZW5kKCkpLCAodikuZW5kKCkpOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2UgY2hyb25vIDsKY29uc3QgbGwgTU9EW10gPSB7KGxsKTFlOSArIDIyNzcsIChsbCkxZTkgKyA1Mjc3LCAobGwpMWU5ICsgODI3NywgKGxsKTFlOSArIDkyNzcsIChsbCkgMWU5ICsgNyB9Owpjb25zdCBsbCBOTU9EID0gMTsKY29uc3QgaW50IGR4W10gPSB7LTEsIDAsIDEsMH07CmNvbnN0IGludCBkeVtdID0gezAsIDEsIDAsIC0xfTsKLy8qKlZhcmlhYmxlKiovLwpsbCBuLCBsb3csIGhpZ2gsIGFuczsKbGwgYXJyWzIwMV1bMjAxXTsKbGwgZFtNQVhOXSA7CnZlY3RvcjxsbD4gYWRqW01BWE5dIDsKbGwgY3VyUG9zW01BWE5dIDsKLy8qKlN0cnVjdCoqLy8Kc3RydWN0IEVkZ2UgewogICAgbGwgdSwgdiwgZmxvdywgY2FwYSA7CiAgICBFZGdlKCkgewogICAgICAgIHUgPSB2ID0gZmxvdyA9IGNhcGEgPSAwIDsKICAgIH0KICAgIEVkZ2UobGwgX3UsIGxsIF92LCBsbCBfZmxvdywgbGwgX2NhcGEpIHsKICAgICAgICB1ID0gX3UsIHYgPSBfdiwgZmxvdyA9IF9mbG93LCBjYXBhID0gX2NhcGEgOwogICAgfQogICAgbGwgZmxvd0V4aXQoKSB7CiAgICAgICAgcmV0dXJuIGNhcGEgLSBmbG93IDsKICAgIH0KfSBlZGdlW01BWE5dOwpib29sICBiZnMobGwgc3RhcnQgKSB7CiAgICBGT1IoaSwgMCwgMipuICsgMSApIGRbaV0gPSBJTkYgOwogICAgZFtzdGFydF0gPSAwIDsKICAgIHF1ZXVlPGxsPiBxOwogICAgcS5wdXNoKHN0YXJ0ICApIDsKICAgIHdoaWxlKCFxLmVtcHR5KCkpIHsKICAgICAgICBsbCB1ID0gcS5mcm9udCgpIDsKICAgICAgICBxLnBvcCgpIDsKICAgICAgICBmb3IobGwgaWQgIDogYWRqW3VdKSB7CiAgICAgICAgICAgIGxsIHYgPSBlZGdlW2lkXS52IDsKICAgICAgICAgICAgaWYoZFt2XSAhPSBJTkYgfHwgIWVkZ2VbaWRdLmZsb3dFeGl0KCkpIGNvbnRpbnVlIDsKICAgICAgICAgICAgZFt2XSA9IGRbdV0gKyAxIDsKICAgICAgICAgICAgcS5wdXNoKHYpIDsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gZFsyKm4rMV0gIT0gSU5GIDsKfQpsbCBkZnMobGwgdSwgbGwgY3VyRmxvdykgewogICAgaWYodSA9PSAyKm4gKyAxICApIHJldHVybiBjdXJGbG93IDsKICAgIGlmKGN1ckZsb3cgPT0gMCkgcmV0dXJuIGN1ckZsb3cgOwogICAgZm9yKDsgY3VyUG9zW3VdIDwgYWRqW3VdLnNpemUoKSA7IGN1clBvc1t1XSArKyApIHsKICAgICAgICBsbCBpZCA9IGFkalt1XVtjdXJQb3NbdV1dIDsKICAgICAgICBsbCB2ID0gZWRnZVtpZF0udiA7CiAgICAgICAgaWYoZFt2XSAhPSBkW3VdICsxIHx8ICFlZGdlW2lkXS5mbG93RXhpdCgpKSBjb250aW51ZSA7CiAgICAgICAgbGwgZGVsdGEgPSBkZnModiwgbWluKGN1ckZsb3csIGVkZ2VbaWRdLmZsb3dFeGl0KCkpKSA7CiAgICAgICAgaWYoZGVsdGEgPT0gMCAgKSBjb250aW51ZSA7CiAgICAgICAgZWRnZVtpZF0uZmxvdyArPSBkZWx0YSA7CiAgICAgICAgZWRnZVtpZF4xXS5mbG93IC09IGRlbHRhIDsKICAgICAgICByZXR1cm4gZGVsdGEgOwogICAgfQogICAgcmV0dXJuIDAgOwp9Ci8vKipGdW5jdGlvbioqLy8KdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWSA+CmJvb2wgbWluaW1pemUoWCAmIHgsIGNvbnN0IFkgJnkgKSB7CiAgICByZXR1cm4geCA+IHkgPyB4ID0geSwgMTowIDsKfQp0ZW1wbGF0ZTxjbGFzcyBYLCBjbGFzcyBZID4KYm9vbCBtYXhpbWl6ZShYICZ4LCBjb25zdCBZICZ5ICkgewogICAgcmV0dXJuIHggPCB5ID8geCA9IHksIDE6MCA7Cn0KCnZvaWQgaW5pdCgpIHsKICAgIGNpbj4+bjsKICAgIGxvdyA9IElORiA7CiAgICBGT1IoaSwxLCBuKSB7CiAgICAgICAgRk9SKGosIDEsIG4gKSB7CiAgICAgICAgICAgIGNpbiA+PiBhcnJbaV1bal0gOwogICAgICAgICAgICBtYXhpbWl6ZShoaWdoLCBhcnJbaV1bal0pIDsKICAgICAgICAgICAgbWluaW1pemUobG93LCBhcnJbaV1bal0gKSA7CiAgICAgICAgfQogICAgfQp9CmJvb2wgY2hlY2sobGwgbSApIHsKICAgIGxsIGNudCA9IDAsIG1heEZsb3cgPSAwIDsKICAgIEZPUihpLCAxLCBuICkgewogICAgICAgIGVkZ2VbY250PDwxXSA9IEVkZ2UoMCwgaSwgMCwgMSkgOwogICAgICAgIGVkZ2VbY250PDwxfDFdID0gRWRnZShpLCAwLCAwLCAwICkgOwogICAgICAgIGFkalswXS5wdXNoX2JhY2soY250PDwxICkgOwogICAgICAgIGFkaltpXS5wdXNoX2JhY2soY250PDwxfDEpIDsKICAgICAgICBjbnQgKysgOwogICAgfQogICAgRk9SKGksIG4rMSwgMiAqIG4gKSB7CiAgICAgICAgZWRnZVtjbnQ8PDFdID0gRWRnZShpLCAyICogbisgMSwgMCwgMSkgOwogICAgICAgIGVkZ2VbY250PDwxfDFdID0gRWRnZSgyKm4rMSwgaSwgMCwgMCApIDsKICAgICAgICBhZGpbaV0ucHVzaF9iYWNrKGNudDw8MSkgOwogICAgICAgIGFkalsyKm4rMV0ucHVzaF9iYWNrKGNudDw8MXwxKSA7CiAgICAgICAgY250ICsrIDsKICAgIH0KICAgIEZPUihpLCAxLCAgbiApIEZPUihqLCAxLG4gKSB7CiAgICAgICAgaWYoYXJyW2ldW2pdIDw9IG0gKSB7CiAgICAgICAgICAgIGVkZ2VbY250IDw8IDEgXSA9IEVkZ2UoaSwgaituLCAwLCAxICkgOwogICAgICAgICAgICBlZGdlW2NudDw8MXwxXSA9IEVkZ2UoaituLCBpLCAwLCAwKSA7CiAgICAgICAgICAgIGFkaltpXS5wdXNoX2JhY2soY250PDwxKSA7CiAgICAgICAgICAgIGFkaltqK25dLnB1c2hfYmFjayhjbnQ8PDF8MSkgOwogICAgICAgICAgICBjbnQgKysgOwogICAgICAgIH0KICAgIH0KICAgIHdoaWxlKGJmcygwKSkgewogICAgICAgIEZPUihpLCAwLCAyICogbiArIDEgKSBjdXJQb3NbaV0gPSAwIDsKICAgICAgICB3aGlsZShpbnQgIHggPSBkZnMoMCwgSU5GKSkgbWF4RmxvdyArPSB4OwogICAgfQogICAgRk9SKGksIDAsIDIqbiArIDEgKSBhZGpbaV0ucmVzaXplKDApIDsKICAgIHJldHVybiBtYXhGbG93ID09IG4gOwp9Cgp2b2lkIHNvbHZlKCkgewogICAgd2hpbGUobG93PD0gaGlnaCApIHsKICAgICAgICBsbCBtID0gbG93ICsgaGlnaCA+PiAxOwogICAgICAgIGlmKGNoZWNrKG0pICkgewogICAgICAgICAgICBhbnMgPSBtIDsKICAgICAgICAgICAgaGlnaD0gbSAtMSA7CiAgICAgICAgfSBlbHNlIGxvdyA9IG0gKyAxIDsKICAgIH0KICAgIGNvdXQgPDwgYW5zIDsKfQoKX19ST09UX18gewogICAgLy8gZnJlb3BlbihOQU1FIi5pbnAiICwgInIiICwgc3RkaW4pOwogICAgLy8gZnJlb3BlbihOQU1FIi5vdXQiICwgInciLCBzdGRvdXQpIDsKICAgIGZhc3Q7CiAgICBpbnQgdCA9IDE7IC8vIGNpbiA+PiB0IDsKICAgIHdoaWxlKHQtLSkgewogICAgICAgIGluaXQoKTsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgcmV0dXJuICgwJjApOwp9CgoKCg==