# include <fstream>
using namespace std;
ifstream fin("avioane.in");
ofstream fout("avioane.out");
int a[4][5][5]={
{{0,0,1,0,0},
{1,1,1,1,1},
{0,0,1,0,0},
{0,1,1,1,0},
{0,0,1,0,0}},
{{0,0,1,0,0},
{0,1,1,1,0},
{0,0,1,0,0},
{1,1,1,1,1},
{0,0,1,0,0}},
{{0,0,0,1,0},
{0,1,0,1,0},
{1,1,1,1,1},
{0,1,0,1,0},
{0,0,0,1,0}},
{{0,1,0,0,0},
{0,1,0,1,0},
{1,1,1,1,1},
{0,1,0,1,0},
{0,1,0,0,0}},
};
int v[12][12],sol[12][12],n,i,j,maxim;
int pune(int d,int i,int j){
for(int ii=0;ii<5;ii++)
for(int jj=0;jj<5;jj++)
if(v[i+ii][j+jj]!=0&&a[d][ii][jj]!=0)
return 0;
return 1;
}
void adauga(int d,int i,int j,int avioane){
for(int ii=0;ii<5;ii++)
for(int jj=0;jj<5;jj++)
if(a[d][ii][jj]!=0)
v[i+ii][j+jj]=avioane;
}
void sterge(int d,int i,int j){
for(int ii=0;ii<5;ii++)
for(int jj=0;jj<5;jj++)
if(a[d][ii][jj]!=0)
v[i+ii][j+jj]=0;
}
void back(int avioane,int i,int j){
if(i>n-4){
if(avioane>maxim){
maxim=avioane;
for(int ii=1;ii<=n;ii++)
for(int jj=1;jj<=n;jj++)
sol[ii][jj]=v[ii][jj];
}
return;
}
for(int d=0;d<4;d++){
if(pune(d,i,j)){
adauga(d,i,j,avioane+1);
if(j>n-5)
back(avioane+1,i+1,1);
else
back(avioane+1,i,j+1);
sterge(d,i,j);
}
}
if(j>n-5)
back(avioane,i+1,1);
else
back(avioane,i,j+1);
}
int main () {
fin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
fin>>v[i][j];
back(0,1,1);
fout<<maxim<<"\n";
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
fout<<sol[i][j]<<" ";
fout<<"\n";
}
return 0;
}