#include <bits/stdc++.h>
#define REP(i,a,b) for(int i=(a);i<(b);i++)
#define RREP(i,a,b) for(int i=(a);i>=(b);i--)
typedef long long ll; typedef long double ld;
using namespace std;
const int INF=1e9, MOD=1e9+7;
const int MAX_N=10000;
int n,m,a[90][90];
int used[90][90]={};
int dfs(int i, int j){
if(i<0 or j<0) return 0;
if(a[i][j]==0) return 0;
if(used[i][j]) return 0;
used[i][j]=true;
int ret =1+max(dfs(i+1,j),max(dfs(i-1,j),max(dfs(i,j+1),dfs(i,j-1))));
used[i][j]=false;
return ret;
}
int main(){
cin >> m >> n;
REP(i,0,n) REP(j,0,m) cin >> a[i][j];
int ma=0;
REP(i,0,n) REP(j,0,m) ma=max(ma,dfs(i,j));
cout << ma << endl;
return 0;
}