int masu[9][9]={
{0,0,3,0,0,0,0,0,0},
{0,9,0,0,0,0,2,0,0},
{4,0,0,5,7,8,0,1,0},
{0,8,2,9,0,0,4,0,3},
{0,0,5,0,0,0,0,0,7},
{0,0,1,0,0,0,0,0,8},
{8,0,0,6,2,5,0,9,0},
{0,0,0,4,0,0,0,0,0},
{0,6,0,0,0,0,8,0,0}};
int check(int i,int x,int y);
int ume(int x,int y);
int main(){
int x,y,i,fin;
for(y=0;y<9;y++)
for(x=0;x<9;x++)
scanf("%d",&masu[y][x]);
fin=ume(0,0);
for(y=0;y<9;y++){
printf("\n");
for(x=0;x<9;x++)
printf("%d ",masu[y][x]);
}
}
int ume(int x,int y){
int i=1,fin=0,pass;
if(x==0&&y==9)
return 1;
else if(masu[y][x]){
if(x<8)
fin=ume(x+1,y);
else if(x==8)
fin=ume(0,y+1);
return fin;
}
while(!fin && i<=9){
pass=check(i,x,y);
if(!pass){
masu[y][x]=i;
if(x<8)
fin=ume(x+1,y);
else if(x==8)
fin=ume(0,y+1);
}
i++;
}
if(!fin)
masu[y][x]=0;
return fin;
}
int check(int i,int x,int y){
int m,n;
for(m=0;m<9;m++){
if(masu[m][x]==i)
return 1;
if(masu[y][m]==i)
return 1;
}
if(y>=0&&y<3){
if(x>=0&&x<3)
for(m=0;m<3;m++)
for(n=0;n<3;n++)
if(masu[m][n]==i)
return 1;
if(x>=3&&x<6)
for(m=0;m<3;m++)
for(n=3;n<6;n++)
if(masu[m][n]==i)
return 1;
if(x>=6&&x<9)
for(m=0;m<3;m++)
for(n=6;n<9;n++)
if(masu[m][n]==i)
return 1;
}
if(y>=3&&y<6){
if(x>=0&&x<3)
for(m=3;m<6;m++)
for(n=0;n<3;n++)
if(masu[m][n]==i)
return 1;
if(x>=3&&x<6)
for(m=3;m<6;m++)
for(n=3;n<6;n++)
if(masu[m][n]==i)
return 1;
if(x>=6&&x<9)
for(m=3;m<6;m++)
for(n=6;n<9;n++)
if(masu[m][n]==i)
return 1;
}
if(y>=6&&y<9){
if(x>=0&&x<3)
for(m=6;m<9;m++)
for(n=0;n<3;n++)
if(masu[m][n]==i)
return 1;
if(x>=3&&x<6)
for(m=6;m<9;m++)
for(n=3;n<6;n++)
if(masu[m][n]==i)
return 1;
if(x>=6&&x<9)
for(m=6;m<9;m++)
for(n=6;n<9;n++)
if(masu[m][n]==i)
return 1;
}
return 0;
}