#include <bits/stdc++.h>
using namespace std;
#define int long long
bool valid(const vector<vector<int>>& a, const vector<vector<int>>& b, const vector<vector<int>>& c, int n) {
vector<int> p(n);
for (int i = 0; i < n; ++i) p[i] = rand() % 2;
vector<int> br(n, 0), cr(n, 0), ar(n, 0);
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j) {
br[i] = (br[i] + b[i][j] * p[j]) % 10;
cr[i] = (cr[i] + c[i][j] * p[j]) % 10;
}
for(int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j)
ar[i] = (ar[i] + a[i][j] * br[j]) % 10;
for(int i = 0; i < n; ++i){
if (ar[i] != cr[i])
return false;
}
return true;
}
bool freivald(const vector<vector<int>>& a, const vector<vector<int>>& b, const vector<vector<int>>& c, int n, int k = 30) {
for (int i = 0; i < k; ++i)
if (!valid(a, b, c, n)) return false;
return true;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
vector<vector<int>> a(n, vector<int>(n));
vector<vector<int>> b(n, vector<int>(n));
vector<vector<int>> c(n, vector<int>(n));
for (int i = 0; i < n; ++i) {
string s;
cin >> s;
for (int j = 0; j < n; ++j)
a[i][j] = s[j] - '0';
}
for (int i = 0; i < n; ++i) {
string s;
cin >> s;
for (int j = 0; j < n; ++j)
b[i][j] = s[j] - '0';
}
for (int i = 0; i < n; ++i) {
string s;
cin >> s;
for (int j = 0; j < n; ++j)
c[i][j] = s[j] - '0';
}
if (freivald(a, b, c, n))
cout << "YES\n";
else
cout << "NO\n";
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwoKYm9vbCB2YWxpZChjb25zdCB2ZWN0b3I8dmVjdG9yPGludD4+JiBhLCBjb25zdCB2ZWN0b3I8dmVjdG9yPGludD4+JiBiLCBjb25zdCB2ZWN0b3I8dmVjdG9yPGludD4+JiBjLCBpbnQgbikgewogICAgdmVjdG9yPGludD4gcChuKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSBwW2ldID0gcmFuZCgpICUgMjsKCiAgICB2ZWN0b3I8aW50PiBicihuLCAwKSwgY3IobiwgMCksIGFyKG4sIDApOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbjsgKytqKSB7CiAgICAgICAgICAgIGJyW2ldID0gKGJyW2ldICsgYltpXVtqXSAqIHBbal0pICUgMTA7CiAgICAgICAgICAgIGNyW2ldID0gKGNyW2ldICsgY1tpXVtqXSAqIHBbal0pICUgMTA7CiAgICAgICAgfQogICAgZm9yKGludCBpID0gMDsgaSA8IG47ICsraSkKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG47ICsraikKICAgICAgICAgICAgYXJbaV0gPSAoYXJbaV0gKyBhW2ldW2pdICogYnJbal0pICUgMTA7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgKytpKXsKICAgICAgICBpZiAoYXJbaV0gIT0gY3JbaV0pCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfQoKYm9vbCBmcmVpdmFsZChjb25zdCB2ZWN0b3I8dmVjdG9yPGludD4+JiBhLCBjb25zdCB2ZWN0b3I8dmVjdG9yPGludD4+JiBiLCBjb25zdCB2ZWN0b3I8dmVjdG9yPGludD4+JiBjLCBpbnQgbiwgaW50IGsgPSAzMCkgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrOyArK2kpCiAgICAgICAgaWYgKCF2YWxpZChhLCBiLCBjLCBuKSkgcmV0dXJuIGZhbHNlOwogICAgcmV0dXJuIHRydWU7Cn0Kc2lnbmVkIG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgaW50IHQ7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBpbnQgbjsKICAgICAgICBjaW4gPj4gbjsKICAgICAgICB2ZWN0b3I8dmVjdG9yPGludD4+IGEobiwgdmVjdG9yPGludD4obikpOwogICAgICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gYihuLCB2ZWN0b3I8aW50PihuKSk7CiAgICAgICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBjKG4sIHZlY3RvcjxpbnQ+KG4pKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgICAgICBzdHJpbmcgczsKICAgICAgICAgICAgY2luID4+IHM7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbjsgKytqKQogICAgICAgICAgICAgICAgYVtpXVtqXSA9IHNbal0gLSAnMCc7CiAgICAgICAgfQoKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgICAgICBzdHJpbmcgczsKICAgICAgICAgICAgY2luID4+IHM7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbjsgKytqKQogICAgICAgICAgICAgICAgYltpXVtqXSA9IHNbal0gLSAnMCc7CiAgICAgICAgfQoKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgICAgICBzdHJpbmcgczsKICAgICAgICAgICAgY2luID4+IHM7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbjsgKytqKQogICAgICAgICAgICAgICAgY1tpXVtqXSA9IHNbal0gLSAnMCc7CiAgICAgICAgfQoKICAgICAgICBpZiAoZnJlaXZhbGQoYSwgYiwgYywgbikpCiAgICAgICAgICAgIGNvdXQgPDwgIllFU1xuIjsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGNvdXQgPDwgIk5PXG4iOwogICAgfQp9Cg==