#include <stdio.h>
 int grid[9][9];
 
 int isSafe(int row, int col, int num){
     for (int x= 0; x < 9; x++) {
         if (  grid [row] [x] == num || grid [x] [col] == num)
         return 0;
     }
     int startRow = row - row % 3;
     int startcol = col - col % 3;
     
     for  (int i = 0; i < 3; i++) {
         for(int j = 0; j < 3; j++) {
             if (grid [ i + startRow] [ j +startCol] == num)
                return 0;
             
         }
   }
    return 1;
 }
 int solve() {
     for(int row = 0; row < 9; row++) {
         for(int col = 0; col < 9; col++)
         {
             if(grid[row][col] == 0){
                 for (int num = 1; num <= 9; num++){
                     if(isSafe(row, col,num))
                     {
                         grid[row][col] = num;
                         if (solve())
                         return 1;
                         grid[row][col] = 0;
                     }
                 }
                 return 0;
             }
         }
     }
     return 1;
 }
 int main(){
     for(int i = 0; i < 9; i++){
         for (int j = 0; j < 9; j++) {
              scanf("%d", &grid[i][j]);
              if (grid[i][j] < 0 || grid[i][j] > 9) {
                  printf("Invalid input\n");
                  return 0;
              }
         }
     }
     
 
 if (solve()) {
     for (int i = 0; i < 9; i++) {
         for (int j = 0; j < 9; j++)
         printf("%d", grid[i][j]);
     printf("\n");    
     }
 }else{
     printf("No solution\n");
   }
   return 0;
 }