#include<stdio.h>

int n,m,ans,lake[100][100];
int x[4] = {0,1,0,-1},y[4] = {-1,0,1,0};


void func(int i,int j,int n){
	lake[i][j] = 0;
	if(n > ans)ans=n;
	
	for(int k = 0;k < 4; k++){
		if(lake[i+x[k]][j+y[k]] && i+x[k] >= 0 && j+y[k] >= 0  && j+y[k] < m){
			func(i+x[k],j+y[k],n+1);
			lake[i+x[k]][j+y[k]] = 1;
		}
	}
	lake[i][j] = 1;
}
		

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