// 2013/11/15 Tazoe

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

int main()
{
	while(true){
		int n;
		cin >> n;

		if(n==0)
			break;

		char G[257][257];
		for(int y=1; y<=n; y++){
			for(int x=1; x<=n; x++){
				cin >> G[y][x];
			}
		}

		int DP1[257][257];	// 上下
		int DP2[257][257];	// 左右
		int DP3[257][257];	// 対角線（左上）
		int DP4[257][257];	// 対角線（右上）
		for(int y=0; y<=n+1; y++){
			for(int x=0; x<=n+1; x++){
				DP1[y][x] = 0;
				DP2[y][x] = 0;
				DP3[y][x] = 0;
				DP4[y][x] = 0;
			}
		}

		int DP_max = 0;

		for(int y=1; y<=n; y++){
			for(int x=1; x<=n; x++){
				if(G[y][x]=='0')
					continue;

				DP1[y][x] = DP1[y-1][x  ]+1;
				DP2[y][x] = DP2[y  ][x-1]+1;
				DP3[y][x] = DP3[y-1][x-1]+1;
				DP4[y][x] = DP4[y-1][x+1]+1;

				DP_max = max(DP_max, max(max(DP1[y][x], DP2[y][x]), max(DP3[y][x], DP4[y][x])));
			}
		}

		cout << DP_max << endl;
	}

	return 0;
}