#include<iostream>
#include<string>
#include<stdio.h>
using namespace std;
bool fai[90][90],vis[90][90]={false};
int best;
int n,m;
int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
void DFS(int x,int y,int len){
	if(fai[y][x]==false||x==-1||y==-1||x==m||y==n||vis[y][x]==true){
		best=max(best,len);
		return;
	}
	len++;
	vis[y][x]=true;
	for(int i=0;i<4;i++)
		DFS(x+dx[i],y+dy[i],len);
	vis[y][x]=false;
}
int main(){
	while(true){
	cin>>n>>m;
	if(n==0&&m==0)
		break;
	best=0;
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			cin>>fai[i][j];

	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			DFS(j,i,0);

	cout<<best<<endl;
	}
	return 0;
}