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();
        }
    }
}