#include <bits/stdc++.h>
using namespace std;
const int N = 15;
int mp[N][N];
bool find_answer_ok;
bool check(int row, int col, int val)
{
    for(int i = 0; i < 9; i++)if(mp[row][i] == val)return false;
    for(int i = 0; i < 9; i++)if(mp[i][col] == val)return false;
    for(int limit_row = row / 3 * 3,i = 0; i < 3; i++)
        for(int limit_col = col / 3 * 3,j = 0; j < 3; j++)
            if(mp[limit_row+i][limit_col+j] == val)return false;
    return true;
}
void dfs(int row, int col)//每个位置
{
    if(col == 9){row++;col = 0;}//下一行
    if(row == 9 && col == 0){find_answer_ok = true;return ;}//成功
    if(mp[row][col] == 0)//空
    {
        for(int i = 1; i <= 9; i++)//遍历
        {
            if(check(row, col, i))
            {
                mp[row][col] = i;
                dfs(row, col + 1);//递归
                if(find_answer_ok)return ;//结束
                mp[row][col] = 0; //dfs没找到能填的,回溯
            }
        }
    }
    else dfs(row, col + 1);
}
int main()
{
    for(int i = 0; i < 9; i++)
        for(int j = 0; j < 9; j++)
            cin >> mp[i][j];
    dfs(0, 0);
    for(int i = 0; i < 9; i++)
    {
        for(int j = 0; j < 9; j++)
            cout << mp[i][j] << ' ';
        cout << endl;
    }
}