int d[10][10];
int row[10][10], col[10][10], square[10][10];
int INDEX;
struct my
{
int x, y;
} wo[100];
int getsquare(int i, int j)
{
return i / 3 * 3 + j / 3;
}
int check(int x, int y, int k)
{
return (row[x][k] == 0 && col[y][k] == 0 && square[getsquare(x, y)][k] == 0);
}
int dfs()
{
if (INDEX != 0) {
my tmp = wo[--INDEX];
int i;
for (i = 1; i <= 9; ++i) {
if (check(tmp.x, tmp.y, i)) {
row[tmp.x][i] = col[tmp.y][i] = 1;
square[getsquare(tmp.x, tmp.y)][i] = 1;
if (dfs()) {
d[tmp.x][tmp.y] = i;
return 1;
} else {
row[tmp.x][i] = col[tmp.y][i] = 0;
square[getsquare(tmp.x, tmp.y)][i] = 0;
}
}
}
wo[INDEX++] = tmp;
return 0;
}
return 1;
}
bool check_it(int d[][10], int a, int b, int x, int y)
{
int test[10] = {0};
int i, j;
for (i = a; i < b; ++i) {
for (j = x; j < y; ++j) {
test[d[i][j]]++;
}
}
for (j = 1; j <= 9; ++j)
if (test[j] != 1)
return false;
return true;
}
int main()
{
int cases = 1, i, j;
char s[150];
int t;
cin>>t;
getchar();
while (t--) {
INDEX = 0;
memset(row, 0, sizeof(row));
memset(col, 0, sizeof(col));
memset(square, 0, sizeof(square));
for (i = 0; i < 9; ++i) {
gets(s);
for (j = 0; j < 9; ++j) {
char c = s[j];
d[i][j] = c - '0';
if (i == 0 && j == 0 && d[i][j] == -1) return 0;
if (d[i][j]) {
row[i][d[i][j]] = 1;
col[j][d[i][j]] = 1;
square[getsquare(i, j)][d[i][j]] = 1;
} else {
wo[INDEX].x = i;
wo[INDEX].y = j;
++INDEX;
}
}
}
dfs();
int tag = 0;
for (i = 0; i < 9; ++i) {
int test[10] = {0};
for (j = 0; j < 9; ++j) {
test[d[j][i]]++;
}
for (j = 1; j <= 9; ++j)
if (test[j] != 1)
break;
if (j != 10) {
tag = 1;
break;
}
}
for (i = 0; i < 9; ++i) {
int test[10] = {0};
for (j = 0; j < 9; ++j) {
test[d[i][j]]++;
}
for (j = 1; j <= 9; ++j)
if (test[j] != 1)
break;
if (j != 10) {
tag = 1;
break;
}
}
if (!check_it(d, 0, 3, 0, 3)) tag = 1;
if (!check_it(d, 0, 3, 3, 6)) tag = 1;
if (!check_it(d, 0, 3, 6, 9)) tag = 1;
if (!check_it(d, 3, 6, 0, 3)) tag = 1;
if (!check_it(d, 3, 6, 3, 6)) tag = 1;
if (!check_it(d, 3, 6, 6, 9)) tag = 1;
if (!check_it(d, 6, 9, 0, 3)) tag = 1;
if (!check_it(d, 6, 9, 3, 6)) tag = 1;
if (!check_it(d, 6, 9, 6, 9)) tag = 1;
if (tag == 1) {
printf("Could not complete this grid.\n\n");
continue;
}
for (i = 0; i < 9; ++i) {
for (j = 0; j < 8; ++j) {
printf("%d", d[i][j]);
}
printf("%d\n", d[i][j]);
}
printf("\n");
}
return 0;
}