#include <bits/stdc++.h>
using namespace std;
vector <int> g[55];
int sch[55],lea[55],t[55],m[55];
int f[55][55],per[55],bed[55];
int find(int k) {
for (int i=0; i<g[k].size(); i++) {
int j=g[k][i];
if (t[j]==0) {
t[j]=1;
if (m[j]==0||find(m[j])==1) {
m[j]=k;
return 1;
}
}
}
return 0;
}
int main () {
int l,n,i,j,p=0,q=0,ans;
cin>>l;
while (l>0) {
cin>>n;
p=0,q=0,ans=0;
memset(m,0,sizeof(m));
for (i=0; i<=502; i++) {
g[i].clear();
}
for (i=1; i<=n; i++) {
cin>>sch[i];
if (sch[i]==0) {
per[++p]=i;
}
}
for (i=1; i<=n; i++) {
cin>>lea[i];
if (sch[i]==1&&lea[i]==1) {
bed[++q]=i;
}
}
for (i=1; i<=n; i++) {
for (j=1; j<=n; j++) {
cin>>f[i][j];
}
}
for (i=1; i<=n; i++) {
if (sch[i]==1&&lea[i]==0) {
per[++p]=i;
bed[++q]=i;
}
}
if (p>q) {
cout<<"T_T"<<endl;
} else {
for (i=1; i<=p; i++) {
for (j=1; j<=q; j++) {
if (f[per[i]][bed[j]]==1||per[i]==bed[j]) {
g[per[i]].push_back(bed[j]);
}
}
}
for (i=1; i<=p; i++) {
if (find(per[i])==1) {
memset(t,0,sizeof(t));
ans++;
}
}
if (ans==p) {
cout<<"^_^"<<endl;
} else {
cout<<"T_T"<<endl;
}
}
l--;
}
return 0;
}