#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int a[100][100],h[100][100],l[100][100],g[100][100],cnt,tot,c[100][100],num;
string s;
struct node{
int x, y;
bool operator<(node b)const{return y>b.y;}
}aa[82],k[15];
int dfs(int i){
if(i>tot){
for(int i=1;i<=9;i++){
for(int j=1;j<=9;j++)cout<<a[i][j];
cout<<endl;
}
return 0;
}
int x=aa[i].x,y=aa[i].y;
for(int k=1;k<=9;k++){
if(!h[x][k]&&!l[y][k]&&!g[(x-1)/3*3+(y-1)/3+1][k]){
a[x][y]=h[x][k]=l[y][k]=g[(x-1)/3*3+(y-1)/3+1][k]=k;
dfs(i+1);
a[x][y]=h[x][k]=l[y][k]=g[(x-1)/3*3+(y-1)/3+1][k]=0;
}
}
}
int main(){
cin>>num;
while(num--){
for(int i=1;i<=9;i++){
cin>>s;
for(int j=1;j<=9;j++)a[i][j]=s[j-1]-'0'+0;
}
for(int i=1;i<=9;i++){
k[i].x=i;
for(int j=1;j<=9;j++){
if(a[i][j]>0){
k[i].y++;
h[i][a[i][j]]=l[j][a[i][j]]=g[(i-1)/3*3+(j-1)/3+1][a[i][j]]=1;
}
}
}
sort(k+1,k+10);
for(int i=1;i<=9;i++){
int row=k[i].x;
for(int j=1;j<=9;j++)
if(a[row][j]==0)aa[++tot].x=row,aa[tot].y=j;
}
dfs(1);
}
return 0;
}
```调了半天也调不出来