#include<iostream>
#include<queue>
#include<stdlib.h>
using namespace std;
#define M 30
char flag[M][M];
char war[M][M];
int num;
typedef struct
{
int x;
int y;
}point;
queue <point> myqueue;
void input()
{
cin>>num;
for(int i=0; i<num; i++)
for(int j=0; j<num; j++)
{
cin>>war[i][j];
}
}
int adj[16]={-1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1};
bool out(int x,int y)
{
if(x<0||y<0||x>=num||y>=num)
return false;
return true;
}
void bfs()
{
int x,y,xx,yy;
point p;
while(!myqueue.empty())
{
p = myqueue.front();
x = p.x;
y = p.y;
for(int i=0; i<16; i+=2)
{
xx = x+adj[i];
yy = y+adj[i+1];
if(out(xx,yy)&&war[xx][yy]=='1')
{
p.x = xx;
p.y = yy;
myqueue.push(p);
war[xx][yy]='0';
}
}
myqueue.pop();
}
}
void solve(int &ans)
{
ans = 0;
point p;
for(int i=0; i<num; i++)
{
for(int j=0; j<num; j++)
{
if(war[i][j]=='1')
{
p.x = i;
p.y = j;
war[i][j]='0';
myqueue.push(p);
bfs();
ans++;
}
}
}
}
void output(int t_num,int ans)
{
cout<<"Image number "<<t_num<<" contains "<<ans<<" war eagles."<<endl;
}
int main()
{
int ans,t_num;
t_num = 0;
while(1)
{
t_num++;
memset(flag,0,sizeof(flag));
input();
if(cin.eof())
break;
solve(ans);
output(t_num,ans);
}
return 0;
}