/*#include <stdio.h>
int m,n,arr[1010][1010]={},day=0,cnt=0,tom=0,visit[1010][1010]={};
int queue[3][2220000]={},front=-1,back=-1,p=0,a=0;
void push(int x, int y)
{
if(x<=-1||x>=n||y<=-1||y>=m||arr[x][y]!=0)
{
return ;
}
else
{
// printf("(%d %d),",x,y);
if(visit[x][y]==0)
{
queue[0][++back]=x;
queue[1][back]=y;
arr[x][y]=1;
visit[x][y]=1;
}
// printf("%d\n",back);
}
}
void bfs()
{
while(1)
{
front++;
int x=queue[0][front];
int y=queue[1][front];
push(x+1,y);
push(x-1,y);
push(x,y-1);
push(x,y+1);
// printf("front %d, p %d, back %d\n",front,p,back);
if(front==p)
{
break;
}
}
return ;
}
int main()
{
int i,j;
scanf("%d %d",&m,&n);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&arr[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(arr[i][j]==1)
{
queue[0][++back]=i;
queue[1][back]=j;
visit[i][j]=1;
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(arr[i][j]!=-1)
{
tom++;
}
}
}
// printf("a");
// printf("%d",tom);
while(1)
{
p=back;
bfs();
day++;
if(back>=tom-1||front==back)
{
break;
}
cnt=0;
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(arr[i][j]==0)
{
printf("-1");
a=1;
break;
}
}
if(a==1)
{
break;
}
}
if(a==0)
{
printf("%d",day);
}
return 0;
}
*/
#include <stdio.h>
int n,k,arr[110000]={},visit[55][]