#include <cstdio>
#include <algorithm>
using namespace std;

int m,n,map[90][90],ans;
int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};

void dfs(int x,int y,int z) {
	map[x][y]=0;
	for(int i=0;i<4;i++) {
		int nx=x+dx[i],ny=y+dy[i];
		if(0<=nx&&nx<m&&0<=ny&&ny<n&&map[nx][ny]) dfs(nx,ny,z+1);
	}
	map[x][y]=1;
	ans=max(ans,z);
}

int main() {
	while(1) {
		ans=0;
		scanf("%d",&m);
		scanf("%d",&n);
		if(m==0&&n==0) break;
		for(int j=0;j<n;j++) {
			for(int i=0;i<m;i++) {
				scanf("%d",&map[i][j]);
			}
		}
		for(int j=0;j<n;j++) {
			for(int i=0;i<m;i++) {
				if(map[i][j]) dfs(i,j,1);
			}
		}
		printf("%d\n",ans);
	}
}