#include<stdio.h> int num,v[100][2],map[10][10]; //bool pd[10][10]; //判断输入的时候是否为零
bool judge(int x,int y,int k) { int i,j,it,jt; for(i=0;i<9;i++) { if(map[i][y]==k) return false; if(map[x][i]==k) return false; } it=(x/3)*3; jt=(y/3)*3; for(i=0;i<3;i++) for(j=0;j<3;j++) if(map[i+it][j+jt]==k) return false; return true; }
int dfs(int cap){ int i,x,y; if(cap<0) return 1;
for(i=1;i<=9;i++){ x=v[cap][0]; y=v[cap][1]; if(judge(x,y,i)){ map[x][y]=i; if(dfs(cap-1)) return 1; map[x][y]=0; } } return 0; }
int main(){ freopen("in.txt","r",stdin); int t,i,j; char c; scanf("%d ",&t); while(t--){ num=0; for(i=0;i<9;i++,getchar()) for(j=0;j<9;j++){ scanf("%c",&c); map[i][j]=c-'0'; if(map[i][j]==0){ //将为空的点的坐标全部记录下来,等下需要用暴力解决 v[num][0]=i; v[num++][1]=j; } } dfs(num-1); for(i=0;i<9;i++){ for(j=0;j<9;j++) printf("%d",map[i][j]); printf(" "); } } return 0; }