#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
char f[300][300];
bool used[300][300];
int n;
int ans;
int dx[4]={1,0,1,-1};
int dy[4]={0,1,-1,1};
void dfs(int x,int y,int d,int k)
{
	if(x<0||x>=n||y<0||y>=n)return;
	//if(used[x][y])return;
	if(f[x][y]=='0')return;
	ans=max(ans,d);
	dfs(x+dx[k],y+dy[k],d+1,k);
	return;
}
void solve(int k)
{
	memset(used,false,sizeof(used));
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			dfs(i,j,1,k);
		}
	}
	return ;
}
int main()
{
	while(1)
	{
		ans=0;
		cin >> n;
		if(n==0)break;
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<n;j++)
			{
				cin >> f[i][j];
			}
		}
		for(int i=0;i<4;i++)solve(i);
		cout << ans << endl;
	}
	return 0;
}