/*
#include<stdio.h>
int map[101][101]= {},n,k,c[101][101]={};
void dfs(int x,int y)
{
if(x<=0||y<=0||x>n||y>n||map[x][y]<=k||c[x][y]==1) return ;
c[x][y]=1;
dfs(x+1,y);
dfs(x-1,y);
dfs(x,y+1);
dfs(x,y-1);
}
int main()
{
int i,j,a[101]={},temp;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
scanf("%d",&map[i][j]);
}
}
for(k=1; k<=100; k++)
{
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
if(map[i][j]>k&&c[i][j]==0)
{
a[k]++;
dfs(i,j);
}
}
}
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
c[i][j]=0;
}
}
}
for(i=1; i<100; i++)
{
for(j=1; j<=100-i; j++)
{
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
if(a[1]==0)
printf("1");
else
printf("%d",a[1]);
}
/*
#include<stdio,h>
int map[11][11];
void dfs(int x,int y)
{
if(x<=0||y<=0||x>10||y>10||x<)
}
int main()
{
int i,j;
for(i=1; i<=10; i++)
{
for(j=1; j<=10; j++)
{
scanf("%d",&map[j][i]);
}
}
for(i=1; i<=10; i++)
{
for(j=1; j<=10; j++)
{
if(map[j][i]>0)
{
dfs(j,i);
}
}
}
}
/*
#include<stdio.h>
int n,m,map0[101][101]={},map1[101][101]={};
void dfs0(int x,int y)
{
if(x<=0||y<=0||x>m||y>n||map0[x][y]!=1) return ;
map0[x][y]=3;
dfs0(x,y+1);
dfs0(x,y-1);
dfs0(x+1,y);
dfs0(x-1,y);
}
void dfs1(int x,int y)
{
if(x<=0||y<=0||x>m||y>n||map1[x][y]!=0) return ;
map1[x][y]=3;
dfs1(x,y+1);
dfs1(x,y-1);
dfs1(x+1,y);
dfs1(x-1,y);
}
int main()
{
int i,j,num0=0,num1=0;
scanf("%d %d",&n,&m);
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
scanf("%d",&map0[j][i]);
map1[j][i]=map0[j][i];
}
}
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
if(map0[j][i]==1)
{
num0++;
dfs0(j,i);
}
if(map1[j][i]==0)
{
num1++;
dfs1(j,i);
}
}
}
printf("%d %d",num1,num0);
}
/*
#include<stdio.h>
int n,map[101][101]={},v[101]={},i;
int queue[10000];
int front=-1,rear=-1;
void enq(int data)
{
queue[++rear]=data;
}
int deq()
{
return queue[++front];
}
int isempty()
{
if(rear==front) return 1;
else return 0;
}
void bfs(int node)
{
for(i=1; i<=n; i++)
{
if(map[node][i]==1&&v[i]==0)
{
enq(i);
v[i]=1;
}
}
}
int main()
{
int m,x,y,k,num=0;
scanf("%d %d",&n,&m);
for (i=1; i<=m; i++)
{
scanf("%d %d",&x,&y);
map[x][y]=1;
map[y][x]=1;
}
v[1]=1;
bfs(1);
while(!isempty())
{
k=deq();
bfs(k);
num++;
}
printf("%d",num);
}
/*/
#include<stdio.h>
int map[101][101]={},q[10000][2]={},rear=-1,front=-1,num=0,n,m;
int o,p;
void enq(int x,int y)
{
q[++rear][0]=x;
q[rear][1]=y;
}
void deq()
{
o=q[++front][0];
p=q[front][1];
}
void bfs(int x,int y)
{
if(x>0&&y>1&&x<=n&y<=m&&map[x][y-1]==0)
{
enq(x,y-1);
map[x][y-1]=1;
}
if(x>0&&y>0&&x<=n&y<m&&map[x][y+1]==0)
{
enq(x,y+1);
map[x][y+1]=1;
}
if(x>1&&y>0&&x<=n&y<=m&&map[x-1][y]==0)
{
enq(x-1,y);
map[x-1][y]=1;
}
if(x>0&&y>0&&x<n&y<=m&&map[x+1][y]==0)
{
enq(x+1,y);
map[x+1][y]=1;
}
}
int main()
{
int i,j,k;
scanf("%d %d",&n,&m);
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
scanf("%d",&map[i][j]);
if(map[i][j]==1)
{
enq(i,j);
}
}
}
while(rear!=front)
{
deq();
bfs(o,p);
}
}