program range;
const
	maxn=250;
var
	fin,fout:text;
	map:array[1..maxn,1..maxn]ofboolean;
	n,size,i,j,count:longint;
	c:char;
begin
	assign(fin,'range.in');
	reset(fin);
	readln(fin,n);
	for i:=1 to n do begin
		for j:=1 ton do begin
			read(fin,c);
			if c='1' then map[i,j]:=true else map[i,j]:=false;
			//这个时候k的大小为1
		end;
		readln(fin);
	end;
	close(fin);

	assign(fout,'range.out'); rewrite(fout);
	for size:=2 to n do begin             //这里的size就是我说的k
		count:=0;
		for i:=1 ton+1-size do
			for j:=1 to n+1-size do begin
				map[i,j]:=map[i,j] and map[i,j+1] and map[i+1,j] and map[i+1,j+1];
				//状态转移:注意:=左边的东西表示大小为k,右边的表示的大小为k-1
				if map[i,j] then inc(count);
			end;
		if count>0 then writeln(fout,size,'',count);
		if count<4 then break;
		//更具状态转移可知,1个大小为k+1的矩形存在,就必须有4个大小为k的矩形存在
	end;
	close(fout);
end.