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.