250716
#include<stdio.h>
int arr[1100][1100]= {}, queue[3][10000]= {}, v[1000]= {};
int back=-1, front=-1, n, m, p, q;
void push(int k, int p)
{
if(k<1||k>m||p>n||p<1||arr[k][p]==1||arr[k][p]==-1)
{
return;
}
arr[k][p]=1;
back++;
queue[1][back]=k;
queue[2][back]=p;
}
int pop()
{
front++;
return queue[1][front];
}
int pup()
{
return queue[2][front];
}
int main()
{
int i, j, d=0, sum=0, c=0;
scanf("%d %d", &n, &m);
for(i=1; i<=m; i++)
{
for(j=1; j<=n; j++)
{
scanf("%d", &arr[i][j]);
}
}
for(i=1; i<=m; i++)
{
for(j=1; j<=n; j++)
{
if(arr[i][j]==1)
{
c++;
back++;
queue[1][back]=i;
queue[2][back]=j;
}
}
}
if(c==m*n)
{
printf("0");
return 0;
}
while(back!=front)
{
d=0;
for(i=front+1; i<=back; i++)
{
printf("(%d %d)\n", queue[1][i], queue[2][i]);
p=pop();
q=pup();
push(p+1, q);
push(p, q+1);
push(p-1, q);
push(p, q-1);
sum++;
}
}
for(i=1; i<=m; i++)
{
for(j=1; j<=n; j++)
{
if(arr[i][j]==0)
{
d=1;
}
}
}
if(d==1)
{
printf("-1\n");
}
printf("%d", sum);
return 0;
}




