#include<bits/stdc++.h>
using namespace std;
#define foru(i,a,b) for(int i=(a); i<=(b); ++i)
#define ford(i,a,b) for(int i=(a); i>=(b); --i)
#define rep(i,a) for(int i=0; i<(a); ++i)
#define sz(a) (int)(a).size()
#define all(a) (a).begin(),(a).end()
#define bit(s,i) (((s)>>(i))&1)
#define ii pair<int,int>
#define fi first
#define se second
#define pb push_back
#define eb emplace_back
#define ll long long
#define _ << " " <<
template <class X, class Y> bool maxi(X &x, Y y){return x<y?x=y,true:false;}
template <class X, class Y> bool mini(X &x, Y y){return x>y?x=y,true:false;}
const int N=2e5+5;
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
int n,m,par[N],deg[N],ans[N],sz[N]; bool vis[N];
ii d[N];
vector<int> adj[N];
int id(int x, int y){
return x*m+y;
}
bool inBoard(int x, int y){
return x>=0 && y>=0 && x<n && y<m;
}
void pre(int u){
sz[u]=1;
for(int v:adj[u]){
pre(v);
sz[u]+=sz[v];
}
}
void dfs(int u, int out){
ans[u]=min(d[u].fi, out+sz[u]);
for(int v:adj[u]){
dfs(v, min(d[u].fi, out+sz[u]-sz[v]));
}
}
int find(int x){
return par[x]==x ? x : par[x]=find(par[x]);
}
void solve(){
cin>>n>>m;
rep(i,n*m) cin>>d[i].fi;
rep(i,n*m) d[i].se=i, par[i]=i;
sort(d, d+n*m, greater<ii>());
rep(i,n*m){
int ix=d[i].se/m, iy=d[i].se%m;
rep(k,4){
int jx=ix+dx[k], jy=iy+dy[k];
if(!inBoard(jx,jy)) continue;
int j=id(jx,jy);
if(!vis[j]) continue;
int ip=find(d[i].se), jp=find(j);
if(ip==jp) continue;
par[jp]=ip;
adj[ip].eb(jp);
// cout<<ip _ jp<<'\n';
++deg[jp];
}
vis[d[i].se]=true;
}
int rt=0;
rep(i,n*m) if(deg[i]==0) rt=i;
sort(d, d+n*m, [] (ii x, ii y){return x.se<y.se;});
pre(rt);
dfs(rt,0);
int res=0;
rep(i,n*m){
int ix=i/m, iy=i%m;
if(ix==0||iy==0||ix==n-1||iy==m-1) maxi(res,ans[i]);//,cout<<ans[i] _ i _ d[i].fi<<'\n';
}
cout<<res<<'\n';
}
int32_t main(){
#define task "test"
if(fopen(task".inp","r")){
freopen(task".inp","r",stdin);
freopen(task".out","w",stdout);
}
cin.tie(0)->sync_with_stdio(0);
int tc=1; //cin>>tc;
rep(i,tc){
solve();
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZm9ydShpLGEsYikgZm9yKGludCBpPShhKTsgaTw9KGIpOyArK2kpCiNkZWZpbmUgZm9yZChpLGEsYikgZm9yKGludCBpPShhKTsgaT49KGIpOyAtLWkpCiNkZWZpbmUgcmVwKGksYSkgZm9yKGludCBpPTA7IGk8KGEpOyArK2kpCiNkZWZpbmUgc3ooYSkgKGludCkoYSkuc2l6ZSgpCiNkZWZpbmUgYWxsKGEpIChhKS5iZWdpbigpLChhKS5lbmQoKQojZGVmaW5lIGJpdChzLGkpICgoKHMpPj4oaSkpJjEpCiNkZWZpbmUgaWkgcGFpcjxpbnQsaW50PgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZWIgZW1wbGFjZV9iYWNrCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgXyA8PCAiICIgPDwKCnRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZPiBib29sIG1heGkoWCAmeCwgWSB5KXtyZXR1cm4geDx5P3g9eSx0cnVlOmZhbHNlO30KdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFk+IGJvb2wgbWluaShYICZ4LCBZIHkpe3JldHVybiB4Pnk/eD15LHRydWU6ZmFsc2U7fQoKY29uc3QgaW50IE49MmU1KzU7CgppbnQgZHhbXT17MCwwLDEsLTF9OwppbnQgZHlbXT17MSwtMSwwLDB9OwoKaW50IG4sbSxwYXJbTl0sZGVnW05dLGFuc1tOXSxzeltOXTsgYm9vbCB2aXNbTl07CmlpIGRbTl07CnZlY3RvcjxpbnQ+IGFkaltOXTsKCmludCBpZChpbnQgeCwgaW50IHkpewogICAgcmV0dXJuIHgqbSt5Owp9Cgpib29sIGluQm9hcmQoaW50IHgsIGludCB5KXsKICAgIHJldHVybiB4Pj0wICYmIHk+PTAgJiYgeDxuICYmIHk8bTsKfQoKdm9pZCBwcmUoaW50IHUpewogICAgc3pbdV09MTsKICAgIGZvcihpbnQgdjphZGpbdV0pewogICAgICAgIHByZSh2KTsKICAgICAgICBzelt1XSs9c3pbdl07CiAgICB9Cn0KCnZvaWQgZGZzKGludCB1LCBpbnQgb3V0KXsKICAgIGFuc1t1XT1taW4oZFt1XS5maSwgb3V0K3N6W3VdKTsKICAgIGZvcihpbnQgdjphZGpbdV0pewogICAgICAgIGRmcyh2LCBtaW4oZFt1XS5maSwgb3V0K3N6W3VdLXN6W3ZdKSk7CiAgICB9Cn0KCmludCBmaW5kKGludCB4KXsKICAgIHJldHVybiBwYXJbeF09PXggPyB4IDogcGFyW3hdPWZpbmQocGFyW3hdKTsKfQoKdm9pZCBzb2x2ZSgpewogICAgY2luPj5uPj5tOwogICAgcmVwKGksbiptKSBjaW4+PmRbaV0uZmk7CiAgICByZXAoaSxuKm0pIGRbaV0uc2U9aSwgcGFyW2ldPWk7CgogICAgc29ydChkLCBkK24qbSwgZ3JlYXRlcjxpaT4oKSk7CiAgICByZXAoaSxuKm0pewogICAgICAgIGludCBpeD1kW2ldLnNlL20sIGl5PWRbaV0uc2UlbTsKICAgICAgICByZXAoayw0KXsKICAgICAgICAgICAgaW50IGp4PWl4K2R4W2tdLCBqeT1peStkeVtrXTsKICAgICAgICAgICAgaWYoIWluQm9hcmQoangsankpKSBjb250aW51ZTsKCiAgICAgICAgICAgIGludCBqPWlkKGp4LGp5KTsKICAgICAgICAgICAgaWYoIXZpc1tqXSkgY29udGludWU7CgogICAgICAgICAgICBpbnQgaXA9ZmluZChkW2ldLnNlKSwganA9ZmluZChqKTsKICAgICAgICAgICAgaWYoaXA9PWpwKSBjb250aW51ZTsKCiAgICAgICAgICAgIHBhcltqcF09aXA7CiAgICAgICAgICAgIGFkaltpcF0uZWIoanApOwovLyAgICAgICAgICAgIGNvdXQ8PGlwIF8ganA8PCdcbic7CiAgICAgICAgICAgICsrZGVnW2pwXTsKICAgICAgICB9CiAgICAgICAgdmlzW2RbaV0uc2VdPXRydWU7CiAgICB9CgogICAgaW50IHJ0PTA7CiAgICByZXAoaSxuKm0pIGlmKGRlZ1tpXT09MCkgcnQ9aTsKCiAgICBzb3J0KGQsIGQrbiptLCBbXSAoaWkgeCwgaWkgeSl7cmV0dXJuIHguc2U8eS5zZTt9KTsKCiAgICBwcmUocnQpOwogICAgZGZzKHJ0LDApOwoKICAgIGludCByZXM9MDsKICAgIHJlcChpLG4qbSl7CiAgICAgICAgaW50IGl4PWkvbSwgaXk9aSVtOwogICAgICAgIGlmKGl4PT0wfHxpeT09MHx8aXg9PW4tMXx8aXk9PW0tMSkgbWF4aShyZXMsYW5zW2ldKTsvLyxjb3V0PDxhbnNbaV0gXyBpIF8gZFtpXS5maTw8J1xuJzsKICAgIH0KICAgIGNvdXQ8PHJlczw8J1xuJzsKfQoKaW50MzJfdCBtYWluKCl7CiAgICAjZGVmaW5lIHRhc2sgInRlc3QiCiAgICBpZihmb3Blbih0YXNrIi5pbnAiLCJyIikpewogICAgICAgIGZyZW9wZW4odGFzayIuaW5wIiwiciIsc3RkaW4pOwogICAgICAgIGZyZW9wZW4odGFzayIub3V0IiwidyIsc3Rkb3V0KTsKICAgIH0KICAgIGNpbi50aWUoMCktPnN5bmNfd2l0aF9zdGRpbygwKTsKCiAgICBpbnQgdGM9MTsgLy9jaW4+PnRjOwogICAgcmVwKGksdGMpewogICAgICAgIHNvbHZlKCk7CiAgICB9Cn0K