program pd;
const
 dx:array[1..8] of integer=(-1,0,0,1,1,1,-1,-1);
 dy:array[1..8] of integer=(0,1,-1,0,1,-1,-1,1);
var
 n,m,i,j,num:longint;
 s:char;
 a:array[0..1000,0..1000]of boolean;
 b:array[0..1000,0..1000]of longint;
 d:array[1..500000,1..2]of longint;
procedure chuli(x,y:integer);
 var
  t,w,p,q,k:longint;
 begin
  a[x,y]:=false;
  d[1,1]:=x; d[1,2]:=y;
  t:=1; w:=1;
  repeat
   for k:= 1 to 8 do
    begin
     p:=d[t,1]+dx[k];
     q:=d[t,2]+dy[k];
     if (p>0) and (p<=n) and (q>0) and (q<=n) and a[p,q] then
      begin
       w:=w+1;
       d[w,1]:=p;
       d[w,2]:=q;
       a[p,q]:=false;
      end;
     end;
    t:=t+1;
  until t>w;
  num:=num+1;
 end;
begin
 readln(n);
 fillchar(a,sizeof(a),true);
 for i:= 1 to n do
  begin
   for j:= 1 to n do
    begin
     read(s);
     b[i,j]:=ord(s)-ord('0');
     if b[i,j]=0 then a[i,j]:=false;
    end;
   readln;
  end;
 for i:= 1 to n do
  for j:= 1 to n do
   begin
    if a[i,j]=true then
     chuli(i,j);
    end;
    writeln(num);
end.
/**************************************************************
	Problem: 2068
	User: admin
	Language: Pascal
	Result: Wrong Answer
****************************************************************/