#include<bits/stdc++.h>
using namespace std;
int x[]={-1,0,0,1};
int y[]={0,-1,1,0};
int pass(int **arr,int r, int c,int n ,int m)
{
arr[r][c]=0;
int count=0;
for(int i=0;i<4;i++)
{
int newr= r + x[i];
int newc= c + y[i];
if(arr[newr][newc]==1 && newr>=0 && newr<n && newc>=0 && newc<m )
{
count=1 + pass(arr,newr,newc,n,m);
}
}
return count;
}
int main()
{
int n,m;
cin >> n >> m;
int **arr=new int*[n];
for(int i=0;i<n;i++)
{
arr[i]=new int[m];
for(int j=0;j<m;j++)
{
arr[i][j]=0;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin >> arr[i][j];
}
}
int max=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(arr[i][j])
{
int a=pass(arr,i,j,n,m);
if(a>max)
{
max=a;
}
}
}
}
cout << max << endl;
return 0;
}