#include<bits/stdc++.h>
using namespace std;
const int N = 15;
int a[N][N];
int hang[N][N], lie[N][N], gong[N][N];
const int easy[N][N] = {6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 7, 7, 7, 7, 7, 7, 7, 6,
6, 7, 8, 8, 8, 8, 8, 7, 6,
6, 7, 8, 9, 9, 9, 8, 7, 6,
6, 7, 8, 9, 10, 9, 8, 7, 6,
6, 7, 8, 9, 9, 9, 8, 7, 6,
6, 7, 8, 8, 8, 8, 8, 7, 6,
6, 7, 7, 7, 7, 7, 7, 7, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6};
bool ket = false;
int ans = 0;
inline void write(int x) {
if (x < 0) {
putchar('-');
x = -x;
}
if (x > 9)
write(x / 10);
putchar(x % 10 + '0');
}
inline int read() {
int s = 0, w = 1;
char ch = getchar();
while (ch < '0' || ch > '9') {
if (ch == '-')w = -1;
ch = getchar();
}
while (ch >= '0' && ch <= '9') s = s * 10 + ch - '0', ch = getchar();
return s * w;
}
void dfs(register int x, register int y) {
if (a[x][y] != 0) {
if (x == 9 && y == 9) {
int flag = 0;
for (register int i = 1; i <= 9; ++i) {
for (register int j = 1; j <= 9; ++j) {
flag += (a[i][j] * easy[i][j]);
}
}
if (flag > ans)
ans = flag;
return;
} else if (y == 9)dfs(x + 1, 1);
else dfs(x, y + 1);
} else {
for (register int i = 1; i <= 9; ++i)
if (hang[x][i] == 0 && lie[y][i] == 0 && gong[(x - 1) / 3 * 3 + (y - 1) / 3 + 1][i] == 0) {
a[x][y] = i;
hang[x][i] = 1;
lie[y][i] = 1;
gong[(x - 1) / 3 * 3 + (y - 1) / 3 + 1][i] = 1;
if (x == 9 && y == 9) {
for (register int i = 1; i <= 9; ++i) {
for (register int j = 1; j <= 9; ++j) {
write(a[i][j]);
putchar(' ');
}
putchar('\n');
}
ket = true;
return;
} else if (y == 9)dfs(x + 1, 1);
else dfs(x, y + 1);
hang[x][i] = 0;
lie[y][i] = 0;
gong[(x - 1) / 3 * 3 + (y - 1) / 3 + 1][i] = 0;
a[x][y] = 0;
}
}
}
int main() {
for (register int i = 1; i <= 9; ++i)
for (register int j = 1; j <= 9; ++j) {
hang[i][j] = 0;
lie[i][j] = 0;
gong[i][j] = 0;
}
for (register int i = 1; i <= 9; ++i)
for (register int j = 1; j <= 9; ++j) {
register int x;
x = read();
a[i][j] = x;
if (x != 0) {
hang[i][x] = 1;
lie[j][x] = 1;
gong[(i - 1) / 3 * 3 + (j - 1) / 3 + 1][x] = 1;
}
}
dfs(1, 1);
write(ans);
return 0;
}