/*#include <stdio.h>
char map[10][10]={};
void dfs(int a, int b)
{
if (a<0 || b<0 || a>9 || b>9 || map[a][b]=='*') return;
map[a][b]='*';
dfs(a-1,b);
dfs(a+1,b);
dfs(a,b+1);
dfs(a,b-1);
}
int main()
{
int a,b,i,j;
char tmp;
for (i=0; i<10; i++)
{
for (j=0; j<10; j++)
{
scanf("%c",&map[i][j]);
}
scanf("%c",&tmp);
}
scanf("%d %d", &a, &b);
dfs(b,a);
for (i=0; i<10; i++)
{
for (j=0; j<10; j++)
{
printf("%c",map[i][j]);
}
printf("\n");
}
}
/*
_ _ _ _ _ _ _ _ _ _
_ _ _ _ _ * * * * _
_ _ _ _ _ * _ _ * _
_ _ * * * * * * * _
_ _ * _ _ * _ * * _
_ _ * _ _ * * * * _
__*____*__
__*____*__
__******__
__________
*/
#include <stdio.h>
#define SIZE 1001
int map[SIZE][SIZE]={};
int n,m,day=0;
typedef struct
{
int x, y;
}point;
point queue[SIZE];
int front=-1,rear=-1;
void enq(point p)
{
map[p.x][p.y]=1;
rear++;
queue[rear]=p;
}
point deq()
{
if(front!=rear)
{
front++;
return queue[front];
}
}
void bfs(point p) //P의 사방에 있는 점 중에 이동할 수 있는 점이 있으면 그 점을 enq해라
{
point tmp;
if (p.x+1>=1&& p.x+1<=n && p.y<=m && p.y>=1 && map[p.x+1][p.y]==0)
{
tmp.x=p.x+1;
tmp.y=p.y;
enq(tmp);
}
if (p.x-1>=1&& p.x-1<=n && p.y<=m && p.y>=1 && map[p.x-1][p.y]==0)
{
tmp.x=p.x-1;
tmp.y=p.y;
enq(tmp);
}
if (p.x>=1&& p.x<=n && p.y+1<=m && p.y+1>=1 && map[p.x][p.y+1]==0)
{
tmp.x=p.x;
tmp.y=p.y+1;
enq(tmp);
}
if (p.x>=1&& p.x<=n && p.y-1<=m && p.y-1>=1 && map[p.x][p.y-1]==0)
{
tmp.x=p.x;
tmp.y=p.y-1;
enq(tmp);
}
}
int main()
{
int i,j;
point p;
scanf("%d %d",&m, &n);
for (i=1; i<=n; i++)
{
for (j=1; j<=m; j++)
{
scanf("%d",&map[i][j]);
if(map[i][j]==1)
{
p.x=i;
p.y=j;
enq(p);
}
}
}
while(rear!=front)
{
p=deq();
bfs(p);
}
printf("%d",day);
return 0;
}