import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static int[][] map = new int[9][9];
public static void main(String[] args) throws IOException {
init();
solve(0, 0);
}
private static void init() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for (int i = 0; i < 9; i++) {
String input = br.readLine();
for (int j = 0; j < 9; j++) {
map[i][j] = input.charAt(j) - '0';
}
}
}
private static void solve(int row, int col) {
// 마지막 열에 도착하면 다음 행으로 이동
if (col == 9) {
solve(row + 1, 0);
return;
}
// 마지막 행에 도착하면 출력 후 종료
if (row == 9) {
print();
System.exit(0);
}
// 현재 위치가 빈칸인 경우 유효성 검사
if (map[row][col] == 0) {
for (int i = 1; i <= 9; i++) {
if (check(row, col, i)) {
map[row][col] = i; // 가능한 숫자를 넣기
solve(row, col + 1); // 다음 열 확인
}
}
map[row][col] = 0; // 값 복귀를 해줘야함
return;
}
solve(row, col + 1); // 다음 열 확인
}
private static void print() {
StringBuilder result = new StringBuilder();
for (int[] ints : map) {
for (int i : ints) {
result.append(i);
}
result.append("\n");
}
System.out.println(result);
}
private static boolean check(int row, int col, int num) {
// 열검사
for (int i = 0; i < 9; i++) {
if (map[row][i] == num) {
return false;
}
}
// 행검사
for (int i = 0; i < 9; i++) {
if (map[i][col] == num) {
return false;
}
}
// 현재 위치가 포함된 3X3 영역 검사
int r = (row / 3) * 3;
int c = (col / 3) * 3;
for (int i = r; i < r + 3; i++) {
for (int j = c; j < c + 3; j++) {
if (map[i][j] == num) {
return false;
}
}
}
return true;
}
}