/*Grid*/
#include<stdio.h>
void func(int,int);
int n;
int i,j;
char a[30][30];
int cnt,max;
int dx[8]={0,1,1,1,0,-1,-1,-1};
int dy[8]={1,1,0,-1,-1,-1,0,1};
int main(void)
{
	//int i,j;
	while(1){
		scanf("%d",&n);
		if(n==0) break;
		for(i=0;i<n;i++) scanf("%s",a[i]);
		//for(i=1;i<n;i++) printf("%s\n",a[i]);
		max=0;
		for(i=0;i<n;i++){
			for(j=0;j<n;j++){
				if(a[i][j]=='1'){
					cnt=1;
					func(i,j);
					//if(max<cnt) max=cnt;
				}
			}	
		}
		//printf("\n");
		//for(i=0;i<n;i++) printf("%s\n",a[i]);
		printf("%d\n",max);
	}
	return 0;
}
void func(int y,int x)
{
	int xx,yy,i1;
	a[y][x]='0';
	for(i1=0;i1<8;i1++){
		xx=x+dx[i1]; yy=y+dy[i1];
		if(xx>n||xx<=0||yy>n||yy<=0||a[yy][xx]=='0'){
			if(max<cnt) max=cnt,/*printf("%d\n",cnt)*/,cnt=0,
			func(i,j);
		}
		else if(xx<n&&xx>=0&&yy<n&&yy>=0&&a[yy][xx]=='1'){
			cnt++; func(yy,xx);
		}
		
	}	
}
