#include <iostream>
#include <vector>
using namespace std;

int w,h;
int mx;
vector< vector<int> > t;
void rec(int y,int x,int dp){
	if(t[y][x]==0)return;
	mx = max(mx,dp);
	t[y][x]=0;
	if(x+1< w)rec(y,x+1,dp+1);
	if(y+1< h)rec(y+1,x,dp+1);
	if(x-1>=0)rec(y,x-1,dp+1);
	if(y-1>=0)rec(y-1,x,dp+1);
	t[y][x]=1;
}

int main(){
	int o;
	while(cin >> w >> h && w || h){
		t.clear();
		t.resize(h);
		mx = 0;
		for(int i=0;i<h;i++){
			for(int j=0;j<w;j++){
				cin >> o;
				t[i].push_back(o);
			}
		}
		/*
		for(int i=0;i<h;i++){
			for(int j=0;j<w;j++){
				cout << t[i][j];
			}
			cout << endl;
		}*/
		for(int i=0;i<h;i++){
			for(int j=0;j<w;j++){
				if(t[i][j])rec(i,j,1);
			}
		}
		cout << mx << endl;
	}
}