import java.util.*;
public class Main {
public static boolean dfs(int[][] mat,
ArrayList<Integer> iLst,
ArrayList<Integer> jLst,
int now) {
if(now == iLst.size()) {
return true;
}
int i = iLst.get(now), j = jLst.get(now);
int x = i / 3, y = j / 3;
HashSet<Integer> set = new HashSet<Integer>();
for(int p = x * 3; p < x * 3 + 3; p++) {
for(int q = y * 3; q < y * 3 + 3; q++) {
set.add(mat[p][q]);
}
}
for(int p = 0; p < 9; p++) {
set.add(mat[i][p]);
set.add(mat[p][j]);
}
for(int k = 1; k < 10; k++) {
if(set.contains(k)) {
continue;
}
mat[i][j] = k;
if(dfs(mat, iLst, jLst, now + 1)) {
return true;
}
mat[i][j] = 0;
}
return false;
}
public static void solve(int[][] mat) {
ArrayList<Integer> iLst = new ArrayList<Integer>();
ArrayList<Integer> jLst = new ArrayList<Integer>();
for(int i = 0; i < 9; i++) {
for(int j = 0; j < 9; j++) {
if(mat[i][j] == 0) {
iLst.add(i);
jLst.add(j);
}
}
}
dfs(mat, iLst, jLst, 0);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[][] mat = new int[9][9];
for(int i = 0; i < 9; i++) {
for(int j = 0; j < 9; j++) {
mat[i][j] = sc.nextInt();
}
}
solve(mat);
for(int i = 0; i < 9; i++) {
System.out.print(mat[i][0]);
for(int j = 1; j < 9; j++) {
System.out.print(" " + mat[i][j]);
}
System.out.println();
}
}
}