#include <fstream>
using namespace std;
ifstream f("lacuri.in");
ofstream g("lacuri.out");
int n,i,j,lc,y[101],nr,ii,jj,dim,okk,q=1,xx[1000],yy[1000],dx[9]={0,-1,0,1,1,1,0,-1,-1},dy[9]={0,-1,-1,-1,0,1,1,1,0},cc,x[101],l,c,p,u,a[101][101],b[101][101];
int lat(int i, int j)
{int p=0;
while(a[i][j+p]&&j+p<=n)p++;
return p;
}
int verif(int i, int j, int dim)
{int ii, jj,r=1;
for(ii=i;ii<=i+dim-1;ii++)
for(jj=j;jj<=j+dim-1;jj++)
if(a[ii][jj]==0)r=0;else if (a[ii-1][jj-1]==2 || a[ii-1][jj]==2 || a[ii-1][jj+1]==2 || a[ii][jj+1]==1 || a[ii+1][jj+1]==1 || a[ii+1][jj]==1 || a[ii+1][jj-1]==1 || a[ii][jj-1]==2)a[ii][jj]=2;
if (r==0)return 0;
for(jj=j-1;jj<=j+dim;jj++)
{if(a[i-1][jj])return 0;
if(a[dim+i][jj])return 0;
}
for(ii=i-1;ii<=i+dim;ii++)
{if(a[ii][j-1])return 0;
if(a[ii][j+dim])return 0;
}
return 1;
}
int ok(int l,int c)
{
if (l<=n && l>0 && c<=n && c>0)return 1;
else return 0;
}
int main()
{
f>>n;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)f>>a[i][j];
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
{
if(a[i][j]==1){
dim=lat(i,j);
okk=verif(i,j,dim);
if(okk)nr++;
}
}
g<<nr<<'\n';
p=1;u=1;x[1]=1;y[1]=1;
b[1][1]=1;
while (p<=u)
{
lc=y[p];
cc=x[p];
p++;
for (i=1;i<=8;i++)
{
l=lc+dy[i];
c=cc+dx[i];
if (a[l][c]==0 && b[l][c]==0 && ok(l,c))
{
u++;
b[l][c]=b[lc][cc]+1;
y[u]=l;
x[u]=c;
}
}
}
u=2*n-1;nr=0;
yy[u]=n;xx[u]=n;
while (xx[u]>1 || yy[u]>1)
{
if (b[yy[u]-1][xx[u]]==b[yy[u]][xx[u]] || b[yy[u]-1][xx[u]]==b[yy[u]][xx[u]]-1 && ok(l,c)){yy[u-1]=yy[u]-1;xx[u-1]=xx[u];}
else {yy[u-1]=yy[u];xx[u-1]=xx[u]-1;}
u--;nr++;
}
for(i=1;i<=nr+1 ;i++)g<<yy[i]<<" "<<xx[i]<<endl;
f.close();
g.close();
}