#include<bits/stdc++.h>
using namespace std;
int fx[] = {-1,0,1,0,-1,-1,1,1}; //i方向
int fy[] = {0,1,0,-1,-1,1,1,-1}; //j方向
int R,C,a[51][51];
int main(){
cin>>R>>C;
int i,j,k,t,oi,oj,mx=INT_MIN;
for(i=1;i<=R;i++)
for(j=1;j<=C;j++)
cin>>a[i][j];
for(i=1;i<=R;i++)
{
for(j=1;j<=C;j++)
{ //0的时候 跳过
if(a[i][j]==0) continue;
t = 0;
//方向数组
for(k=0;k<8;k++)
{
oi = i + fx[k];
oj = j + fy[k];
if(oi>=1&&oi<=R&&oj>=1&&oj<=C&&a[oi][oj]==a[i][j])
{
t++;
}
}
if(t>0){
mx = max(mx,a[i][j]);
}
}
}
cout<<mx;
return 0;
}
/**************************************************************
Problem: 1917
User: admin
Language: C++
Result: Accepted
Time:8 ms
Memory:2084 kb
****************************************************************/