
#include <iostream>

using namespace std;

struct loc{
  int r, c;
};

bool Used[10];
int Grid[9][9];
loc Blanks[5];

void clear(){
  for(int i=1;i<10; i++) Used[i]=false;
}

bool GridOK(){
 //check rows
 for(int r=0;r<9;r++){
  clear();
  for(int c=0;c<9;c++)
   if(Used[Grid[r][c]]) return false;
   else Used[Grid[r][c]]=true;
 }
 //check cols
 for(int c=0;c<9;c++){
  clear();
  for(int r=0;r<9;r++)
   if(Used[Grid[r][c]]) return false;
   else Used[Grid[r][c]]=true;
 }
 //check blocks
 for(int r=0;r<9;r=r+3)
  for(int c=0;c<9;c=c+3){
    clear();
    //[r][c] is u.l.h. corner of block
    for(int i=0;i<3;i++)
     for(int j=0;j<3;j++)
      if(Used[Grid[r+i][c+j]]) return false;
      else  Used[Grid[r+i][c+j]]=true;
  }
 return true;

}

void PrintGrid(){
  if(!GridOK()) cout<<"Could not complete this grid."<<endl;
  else {
    for(int i=0;i<9;i++){
      for(int j=0;j<9;j++)
        cout<<Grid[i][j];
      cout<<endl;
    }
  }
}

void printTheGrid(){
    for(int i=0;i<9;i++){
      for(int j=0;j<9;j++)
        cout<<Grid[i][j];
      cout<<endl;
    }
}

void GetGrid(){
  char c;
  int k = 0;

  for(int i=0;i<9;i++)
   for(int j=0;j<9;j++){
    cin>>c;
    Grid[i][j] = c - '0';
    if(c == '0') {Blanks[k].r=i; Blanks[k].c=j; k++;}
   }
}

int main(){
  int n;

  cin>>n;
  for(int i=0;i<n;i++){
    GetGrid();

    for(int i0=1;i0<10;i0++){
      Grid[Blanks[0].r][Blanks[0].c]=i0;
      for(int i1=1;i1<10;i1++){
        Grid[Blanks[1].r][Blanks[1].c]=i1;
        for(int i2=1;i2<10;i2++){
          Grid[Blanks[2].r][Blanks[2].c]=i2;
          for(int i3=1;i3<10;i3++){
            Grid[Blanks[3].r][Blanks[3].c]=i3;
            for(int i4=1;i4<10;i4++){
              Grid[Blanks[4].r][Blanks[4].c]=i4;
              if(GridOK()) i0=i1=i2=i3=i4=10;
    }}}}}
 
  if(i>0) cout<<endl;
  PrintGrid();
  }


 return 0;
}
