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

int mas[100][100]={0};
int dx[] = {0,1,0,-1},dy[] = {1,0,-1,0};
int w,h,maxi;

void dfs(int x,int y,int cnt){
    for(int i=0;i<4;i++){
        int nx = x + dx[i];
        int ny = y + dy[i];
        if(mas[ny][nx] == 1){
            mas[ny][nx] = 0;
            dfs(nx,ny,cnt+1);
            mas[ny][nx] = 1;
        }
    }
    maxi = max(maxi,cnt);
}

int main(){
    while(1){
        maxi = 0;
        cin >> w >> h;
        if(w == 0 && h == 0) break;
        for(int i=0;i<h;i++){
            for(int j=0;j<w;j++) cin >> mas[i][j];
        }
        
        for(int i=0;i<h;i++){
            for(int j=0;j<w;j++){
                if(mas[i][j] == 1) dfs(j,i,0);
            }
        }
        cout << maxi << endl;
    }
}