#include <cstdio>
#include <cstring>
#include <cstdlib>
char sudoku[9][9];
void outputSudoku()
{
int i,j,W=9;
for(i=0;i<W;i++)
{
for(j=0;j<W;j++)
{
printf("%d",sudoku[i][j]);
}
printf("\n");
}
}
int judge()
{
int status=1;
int i,j,k1,k2,W=9;
char bucket[10];
for(i=0;status>-1 && i<W;i++)
{
memset(bucket,0,sizeof(bucket));
for(j=0;j<W;j++)
{
bucket[ sudoku[i][j] ] ++;
}
if(bucket[0]>0)
{
status = 0;
}
for(j=1;j<10;j++)
{
if(bucket[j]>1)
{
status = -1;
break;
}
}
}
for(j=0;status>-1 && j<W;j++)
{
memset(bucket,0,sizeof(bucket));
for(i=0;i<W;i++)
{
bucket[ sudoku[i][j] ] ++;
}
if(bucket[0]>0)
{
status = 0;
}
for(i=1;i<10;i++)
{
if(bucket[i]>1)
{
status = -1;
break;
}
}
}
for(k1=0;status>-1 && k1<W;k1+=3)
{
for(k2=0;status >-1 && k2<W;k2+=3)
{
memset(bucket,0,sizeof(bucket));
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
bucket[ sudoku[k1+i][k2+j] ]++;
}
}
if(bucket[0]>0)
{
status=0;
}
for(i=1;i<10;i++)
{
if(bucket[i]>1)
{
status=-1;
break;
}
}
}
}
return status;
}
void fill(int x,int y)
{
int i,j;
bool passFlag = true;
for(i=x;passFlag && i<9;i++)
{
for(j=0;passFlag && j<9;j++)
{
if(sudoku[i][j]==0)
{
passFlag =false;
break;
}
}
if(passFlag==false)
break;
}
int tryValue,status;
tryValue=rand();
for(int k=0;k<9;k++)
{
sudoku[i][j] = 1+ (tryValue+k)%9;
status=judge();
if(status == 0)
{
fill(x,y);
}
else if (status == 1)
{
outputSudoku();
return;
}
}
sudoku[i][j]=0;
}
void solve()
{
int i,j,W=9;
for(i=0;i<W;i++)
{
getchar();
for(j=0;j<W;j++)
{
scanf("%c",&sudoku[i][j]);
sudoku[i][j] -='0';
}
}
fill(0,0);
}
int main(void)
{
int N;
scanf("%d",&N);
while(N--)
{
solve();
}
return 0;
}