#include <iostream>
#include <cstring>
#include <queue>
#include <cmath>
using namespace std;
#define FOR(i,a,b) for(short i=a; i<=b; ++i)
#define endl '\n'
#define x first
#define y second
const short max_n = 500;
short n;
long MAX = 0;
long a[max_n+2][max_n+2];
bool check[max_n+1][max_n+1];
void debug(long high, long cnt)
{
cerr << endl;
cerr << "high: " << high << endl;
cerr << "cnt: " << cnt << endl;
FOR(i,1,n)
{
FOR(j,1,n) cerr << check[i][j] << ' ';
cerr << endl;
}
system("pause");
}
void inp()
{
// freopen("ROBOT.INP", "r", stdin);
// freopen("ROBOT.OUT", "w", stdout);
cin >> n;
FOR(i,1,n)
FOR(j,1,n)
{
cin >> a[i][j];
MAX = max(MAX, a[i][j]);
}
FOR(i,1,n)
{
a[0][i] = -1;
a[n+1][i] = -1;
a[i][0] = -1;
a[i][n+1] = -1;
}
}
long BFS(short x, short y, long high)
{
queue< pair<long, long> > q;
short Ox[4] = {0, 0, -1, 1};
short Oy[4] = {1, -1, 0, 0};
q.push({x,y});
long cnt = 1;
check[x][y] = true;
while (!q.empty())
{
pair <short, short> top;
top = q.front(); q.pop();
FOR(i,0,3)
{
short xx = top.x + Oy[i];
short yy = top.y + Ox[i];
if (a[xx][yy]!=-1 && !check[xx][yy] && abs(a[xx][yy] - a[x][y]) <= high)
{
++cnt;
q.push({xx,yy});
check[xx][yy] = true;
}
}
}
// debug(high, cnt);
return cnt;
}
bool check_high(long high)
{
memset(check, false, sizeof(check));
FOR(i, 1, n)
FOR(j, 1, n)
if (!check[i][j])
if (BFS(i,j, high) >= floor(n*n/2.0d)) return true;
return false;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
inp();
long l = 0, r = MAX, res = 0;
while (l<=r)
{
long mid = (l+r) / 2;
if (check_high(mid))
{
res = mid;
r = mid - 1;
} else l = mid + 1;
}
cout << res;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIEZPUihpLGEsYikgZm9yKHNob3J0IGk9YTsgaTw9YjsgKytpKQojZGVmaW5lIGVuZGwgJ1xuJwojZGVmaW5lIHggICAgZmlyc3QKI2RlZmluZSB5ICAgIHNlY29uZApjb25zdCBzaG9ydCBtYXhfbiA9IDUwMDsKCnNob3J0IG47CmxvbmcgTUFYID0gMDsKbG9uZyBhW21heF9uKzJdW21heF9uKzJdOwpib29sIGNoZWNrW21heF9uKzFdW21heF9uKzFdOwoKdm9pZCBkZWJ1Zyhsb25nIGhpZ2gsIGxvbmcgY250KQp7CiAgICBjZXJyIDw8IGVuZGw7CiAgICBjZXJyIDw8ICJoaWdoOiAiIDw8IGhpZ2ggPDwgZW5kbDsKICAgIGNlcnIgPDwgImNudDogIiA8PCBjbnQgPDwgZW5kbDsKICAgIEZPUihpLDEsbikKICAgIHsKICAgICAgICBGT1IoaiwxLG4pIGNlcnIgPDwgY2hlY2tbaV1bal0gPDwgJyAnOwogICAgICAgIGNlcnIgPDwgZW5kbDsKICAgIH0KICAgIHN5c3RlbSgicGF1c2UiKTsKfQoKdm9pZCBpbnAoKQp7CiAgLy8gIGZyZW9wZW4oIlJPQk9ULklOUCIsICJyIiwgc3RkaW4pOwogIC8vICBmcmVvcGVuKCJST0JPVC5PVVQiLCAidyIsIHN0ZG91dCk7CgogICAgY2luID4+IG47CiAgICBGT1IoaSwxLG4pCiAgICAgICAgRk9SKGosMSxuKQogICAgICAgIHsKICAgICAgICAgICAgY2luID4+IGFbaV1bal07CiAgICAgICAgICAgIE1BWCA9IG1heChNQVgsIGFbaV1bal0pOwogICAgICAgIH0KCiAgICBGT1IoaSwxLG4pCiAgICB7CiAgICAgICAgYVswXVtpXSA9IC0xOwogICAgICAgIGFbbisxXVtpXSA9IC0xOwogICAgICAgIGFbaV1bMF0gPSAtMTsKICAgICAgICBhW2ldW24rMV0gPSAtMTsKICAgIH0KfQoKbG9uZyBCRlMoc2hvcnQgeCwgc2hvcnQgeSwgbG9uZyBoaWdoKQp7CiAgICBxdWV1ZTwgcGFpcjxsb25nLCBsb25nPiA+IHE7CiAgICBzaG9ydCBPeFs0XSA9IHswLCAwLCAtMSwgMX07CiAgICBzaG9ydCBPeVs0XSA9IHsxLCAtMSwgMCwgMH07CgogICAgcS5wdXNoKHt4LHl9KTsKICAgIGxvbmcgY250ID0gMTsKICAgIGNoZWNrW3hdW3ldID0gdHJ1ZTsKICAgIHdoaWxlICghcS5lbXB0eSgpKQogICAgewogICAgICAgIHBhaXIgPHNob3J0LCBzaG9ydD4gdG9wOwogICAgICAgIHRvcCA9IHEuZnJvbnQoKTsgcS5wb3AoKTsKCiAgICAgICAgRk9SKGksMCwzKQogICAgICAgIHsKICAgICAgICAgICAgc2hvcnQgeHggPSB0b3AueCArIE95W2ldOwogICAgICAgICAgICBzaG9ydCB5eSA9IHRvcC55ICsgT3hbaV07CgogICAgICAgICAgICBpZiAoYVt4eF1beXldIT0tMSAmJiAhY2hlY2tbeHhdW3l5XSAmJiBhYnMoYVt4eF1beXldIC0gYVt4XVt5XSkgPD0gaGlnaCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgKytjbnQ7CiAgICAgICAgICAgICAgICBxLnB1c2goe3h4LHl5fSk7CiAgICAgICAgICAgICAgICBjaGVja1t4eF1beXldID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgLy8gZGVidWcoaGlnaCwgY250KTsKICAgIHJldHVybiBjbnQ7Cn0KCmJvb2wgY2hlY2tfaGlnaChsb25nIGhpZ2gpCnsKICAgIG1lbXNldChjaGVjaywgZmFsc2UsIHNpemVvZihjaGVjaykpOwogICAgRk9SKGksIDEsIG4pCiAgICAgICAgRk9SKGosIDEsIG4pCiAgICAgICAgICAgIGlmICghY2hlY2tbaV1bal0pCiAgICAgICAgICAgICAgICBpZiAoQkZTKGksaiwgaGlnaCkgPj0gZmxvb3IobipuLzIuMGQpKSByZXR1cm4gdHJ1ZTsKICAgIHJldHVybiBmYWxzZTsKfQoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKCiAgICBpbnAoKTsKCiAgICBsb25nIGwgPSAwLCByID0gTUFYLCByZXMgPSAwOwogICAgd2hpbGUgKGw8PXIpCiAgICB7CiAgICAgICAgbG9uZyBtaWQgPSAobCtyKSAvIDI7CiAgICAgICAgaWYgKGNoZWNrX2hpZ2gobWlkKSkKICAgICAgICB7CiAgICAgICAgICAgIHJlcyA9IG1pZDsKICAgICAgICAgICAgciA9IG1pZCAtIDE7CiAgICAgICAgfSBlbHNlIGwgPSBtaWQgKyAxOwogICAgfQoKICAgIGNvdXQgPDwgcmVzOwoKICAgIHJldHVybiAwOwp9Cg==