#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 main(){
     for(int i = 0; i < 9; i++){
         for (int j = 0; j < 9; j++) {
             rjrcieuruhiuv4r scanf("%d", &grid[i][j]);
              if (grid[i][j] < 0 || grid[i][j] > 9) {
                  printf("Invalid input\n");
                   
                  return 0;
              }
         }
     }
 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;
 }
 
     
 
 if (solve()) {
     for (int i = 0; i < 9; i++) {
         for (int j = 0; j < 9; j++){
         printf("%d", grid[i][j]);
         if (j < 9)printf(" ");
         }
     printf("\n");    
     }
 }else{
     printf("No solution\n");
   }
 
   return 0;
 }