1 #include<cstdio>
2 #include<cstring>
3 #include<cstdlib>
4 #include<iostream>
5 #define sh short
6 #define mem(a,b) memset(a,b,sizeof(a))
7 using namespace std;
8 inline int maxn(int a,int b){return a>b?a:b;}
9
10 /*struct son
11 {
12 int x,y;
13 son(int qq=0,int ww=0)
14 {
15 x=qq;y=ww;
16 }
17 };
18 son ji[206];*/
19 //int num;
20 int a[11][11];
21 bool heng[11][11],zong[11][11];
22 int dui[11][11];
23 int pos[11][11],judge[11][11];
24
25 int ans,sco;
26
27 void dfs(sh x,sh y)
28 {
29 if(y==10)
30 y=1,++x;
31 if(x==10)
32 {
33 ans=maxn(ans,sco);
34 return ;
35 }
36 if(a[x][y])
37 {
38 dfs(x,y+1);
39 return ;
40 }
41
42 for(sh i=9;i>=1;--i)
43 {
44 if(heng[x][i]||zong[y][i]||judge[pos[x][y]][i])continue;
45 heng[x][i]=1;
46 zong[y][i]=1;
47 judge[pos[x][y]][i]=1;
48 //a[x][y]=i;
49
50 sco+=i*dui[x][y];
51 dfs(x,y+1);
52 heng[x][i]=0;
53 zong[y][i]=0;
54 judge[pos[x][y]][i]=0;
55 //a[x][y]=0;
56 sco-=i*dui[x][y];
57 }
58 }
59
60 int main(){
61 //freopen("1.txt","r",stdin);
62 //freopen("2.txt","w",stdout);
63 //freopen("sudoku.in","r",stdin);
64 //freopen("sudoku.out","w",stdout);
65 for(int i=1;i<=9;++i)
66 for(int j=1;j<=9;++j)
67 {
68 scanf("%d",&a[i][j]);
69 /*if(!a[i][j])continue;
70 if(heng[i][a[i][j]]||zong[j][a[i][j]])
71 {
72 printf("-1");
73 return 0;
74 }*/
75 heng[i][a[i][j]]=1;
76 zong[j][a[i][j]]=1;
77 }
78
79 for(int j=1;j<=9;++j)
80 dui[1][j]=dui[9][j]=6;
81 for(int i=2;i<=8;++i)
82 dui[i][1]=dui[i][9]=6;
83 for(int j=2;j<=8;++j)
84 dui[2][j]=dui[8][j]=7;
85 for(int i=3;i<=7;++i)
86 dui[i][2]=dui[i][8]=7;
87 for(int j=3;j<=7;++j)
88 dui[3][j]=dui[7][j]=8;
89 for(int i=4;i<=6;++i)
90 dui[i][3]=dui[i][7]=8;
91 for(int j=4;j<=6;++j)
92 dui[4][j]=dui[6][j]=9;
93 for(int i=5;i<=5;++i)
94 dui[i][4]=dui[i][6]=9;
95 dui[5][5]=10;
96
97 for(int i=1;i<=9;++i)
98 for(int j=1;j<=9;++j)
99 sco+=dui[i][j]*a[i][j];
100
101 /*for(int i=1;i<=9;++i)
102 for(int j=1;j<=9;++j)
103 if(dui[i][j]==10&&a[i][j]==0)
104 ji[++num]=son(i,j);
105 for(int i=1;i<=9;++i)
106 for(int j=1;j<=9;++j)
107 if(dui[i][j]==9&&a[i][j]==0)
108 ji[++num]=son(i,j);
109 for(int i=1;i<=9;++i)
110 for(int j=1;j<=9;++j)
111 if(dui[i][j]==8&&a[i][j]==0)
112 ji[++num]=son(i,j);
113 for(int i=1;i<=9;++i)
114 for(int j=1;j<=9;++j)
115 if(dui[i][j]==7&&a[i][j]==0)
116 ji[++num]=son(i,j);
117 for(int i=1;i<=9;++i)
118 for(int j=1;j<=9;++j)
119 if(dui[i][j]==6&&a[i][j]==0)
120 ji[++num]=son(i,j);*/
121 /*printf("\n");
122 for(int i=1;i<=9;++i)
123 {
124 for(int j=1;j<=9;++j)
125 printf("%d ",dui[i][j]);
126 printf("\n");
127 }
128 printf("\n");
129
130 printf("sco=%d\n",sco);*/
131
132 for(int i=1;i<=3;++i)
133 for(int j=1;j<=3;++j)
134 pos[i][j]=1;
135 for(int i=1;i<=3;++i)
136 for(int j=4;j<=6;++j)
137 pos[i][j]=2;
138 for(int i=1;i<=3;++i)
139 for(int j=7;j<=9;++j)
140 pos[i][j]=3;
141 for(int i=4;i<=6;++i)
142 for(int j=1;j<=3;++j)
143 pos[i][j]=4;
144 for(int i=4;i<=6;++i)
145 for(int j=4;j<=6;++j)
146 pos[i][j]=5;
147 for(int i=4;i<=6;++i)
148 for(int j=7;j<=9;++j)
149 pos[i][j]=6;
150 for(int i=7;i<=9;++i)
151 for(int j=1;j<=3;++j)
152 pos[i][j]=7;
153 for(int i=7;i<=9;++i)
154 for(int j=4;j<=6;++j)
155 pos[i][j]=8;
156 for(int i=7;i<=9;++i)
157 for(int j=7;j<=9;++j)
158 pos[i][j]=9;
159
160 for(int i=1;i<=9;++i)
161 for(int j=1;j<=9;++j)
162 judge[pos[i][j]][a[i][j]]=1;
163
164 ans=-1;
165 dfs(1,1);
166
167 cout<<ans;
168
169 while(1);
170 return 0;
171 }