#include <bits/stdc++.h>
#define x first
#define y second
#define n 16
using namespace std;
bool h[18]['Z'], c[18]['Z'], o[6][6]['Z'];
char a[18][18];
int k;
typedef pair<int, int> ii;
ii bd;
bool ok;
void back(int x, int y) {
if (ok) return;
if (x == 16) { ok = true; return; }
if (a[x][y] != '-') {
if (y + 1 == n) back(x + 1, 0); else back(x, y + 1);
return;
}
for (char i = 'A'; i <= 'P'; ++ i) {
if (ok || h[x][i] || c[y][i] || o[x % 4][y % 4][i]) continue;
a[x][y] = i;
h[x][i] = true;
c[y][i] = true;
o[x % 4][y % 4][i] = true;
if (y + 1 == n) back(x + 1, 0); else back(x, y + 1);
a[x][y] = '-';
h[x][i] = false;
c[y][i] = false;
o[x % 4][y % 4][i] = false;
}
}
int main() {
// freopen("file.inp", "r", stdin);
cin >> k;
while (k > 0) {
-- k;
memset(h, false, sizeof(h));
memset(c, false, sizeof(c));
memset(o, false, sizeof(o));
ok = false;
for (int i = 0; i < n; ++ i)
for (int j = 0; j < n; ++ j) {
cin >> a[i][j];
if (a[i][j] == '-') continue;
h[i][a[i][j]] = true;
c[j][a[i][j]] = true;
o[i % 4][j % 4][a[i][j]] = true;
}
back(0, 0);
for (int i = 0; i < n; ++ i) {
for (int j = 0; j < n; ++ j) cout << a[i][j];
cout << endl;
}
}
return(0);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgeCBmaXJzdAojZGVmaW5lIHkgc2Vjb25kCiNkZWZpbmUgbiAxNgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmJvb2wgaFsxOF1bJ1onXSwgY1sxOF1bJ1onXSwgb1s2XVs2XVsnWiddOwpjaGFyIGFbMThdWzE4XTsKCmludCBrOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOwppaSBiZDsKYm9vbCBvazsKCnZvaWQgYmFjayhpbnQgeCwgaW50IHkpIHsKCWlmIChvaykgcmV0dXJuOwoJaWYgKHggPT0gMTYpIHsgb2sgPSB0cnVlOyByZXR1cm47IH0KCWlmIChhW3hdW3ldICE9ICctJykgewoJCWlmICh5ICsgMSA9PSBuKSBiYWNrKHggKyAxLCAwKTsgZWxzZSBiYWNrKHgsIHkgKyAxKTsKCQlyZXR1cm47Cgl9Cglmb3IgKGNoYXIgaSA9ICdBJzsgaSA8PSAnUCc7ICsrIGkpIHsKCQlpZiAob2sgfHwgaFt4XVtpXSB8fCBjW3ldW2ldIHx8IG9beCAlIDRdW3kgJSA0XVtpXSkgY29udGludWU7CgkJYVt4XVt5XSA9IGk7CgkJaFt4XVtpXSA9IHRydWU7CgkJY1t5XVtpXSA9IHRydWU7CgkJb1t4ICUgNF1beSAlIDRdW2ldID0gdHJ1ZTsKCQlpZiAoeSArIDEgPT0gbikgYmFjayh4ICsgMSwgMCk7IGVsc2UgYmFjayh4LCB5ICsgMSk7CgkJYVt4XVt5XSA9ICctJzsKCQloW3hdW2ldID0gZmFsc2U7CgkJY1t5XVtpXSA9IGZhbHNlOwoJCW9beCAlIDRdW3kgJSA0XVtpXSA9IGZhbHNlOwoJfQp9CgppbnQgbWFpbigpIHsKLy8JZnJlb3BlbigiZmlsZS5pbnAiLCAiciIsIHN0ZGluKTsKCWNpbiA+PiBrOwoJd2hpbGUgKGsgPiAwKSB7CgkJLS0gazsKCQltZW1zZXQoaCwgZmFsc2UsIHNpemVvZihoKSk7CgkJbWVtc2V0KGMsIGZhbHNlLCBzaXplb2YoYykpOwoJCW1lbXNldChvLCBmYWxzZSwgc2l6ZW9mKG8pKTsgCgkJb2sgPSBmYWxzZTsgCgkJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArKyBpKSAKCQkJZm9yIChpbnQgaiA9IDA7IGogPCBuOyArKyBqKSB7CgkJCQljaW4gPj4gYVtpXVtqXTsKCQkJCWlmIChhW2ldW2pdID09ICctJykgY29udGludWU7CgkJCQloW2ldW2FbaV1bal1dID0gdHJ1ZTsKCQkJCWNbal1bYVtpXVtqXV0gPSB0cnVlOwoJCQkJb1tpICUgNF1baiAlIDRdW2FbaV1bal1dID0gdHJ1ZTsKCQkJfSAKCQliYWNrKDAsIDApOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgKysgaSkgewoJCQlmb3IgKGludCBqID0gMDsgaiA8IG47ICsrIGopIGNvdXQgPDwgYVtpXVtqXTsKCQkJY291dCA8PCBlbmRsOwoJCX0KCX0KCXJldHVybigwKTsKfQ==