1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 using namespace std;
5 const int maxn=27;
6 bool flag;
7 int map[maxn][maxn];
8 bool check(int x,int val){
9 int j=x/9;
10 for(int i=0;i<9;i++){
11 if(map[j][i]==val) return false;
12 }
13 j=x%9;
14 for(int i=0;i<9;i++){
15 if(map[i][j]==val) return false;
16 }
17 int xx=x/9/3*3;
18 int yy=x%9/3*3;
19 for(int i=xx;i<xx+3;i++){
20 for(int j=yy;j<yy+3;j++){
21 if(map[i][j]==val) return 0;
22 }
23 }
24 return true;
25 }
26 int dfs(int x){
27 if(x>=81){flag=true;return 0;}
28 if(map[x/9][x%9]!=0){dfs(x+1);}
29 else{
30 for(int i=1;i<=9;i++){
31 if(check(x,i)==true){
32 map[x/9][x%9]=i;
33 dfs(x+1);
34 if(flag==true) return 0;
35 map[x/9][x%9]=0;
36 }
37 }
38 }
39 }
40 int main(){
41 for(int i=0;i<9;i++){
42 for(int j=0;j<9;j++){
43 cin>>map[i][j];
44 }
45 }
46 dfs(0);
47 for(int i=0;i<9;i++){
48 for(int j=0;j<9;j++){
49 cout<<map[i][j]<<" ";
50 }
51 cout<<endl;
52 }
53 return 0;
54 }