#include <bits/stdc++.h>
using namespace std;
int n,st[101],ba[101],v[101],match[101];
vector<int> rel[103];
bool dfs(int x){
for(int i=0;i<rel[x].size();i++){
int to=rel[x][i];
if(!v[match[to]]){
v[match[to]]=1;
if(match[to]==0||dfs(match[to])){
match[to]=x;
return 1;
}
}
}
return 0;
}
void run(){
int num=0;
int ans=0;
cin>>n;
for(int i=1;i<=n*2+1;i++){
rel[i].clear();
}
memset(st,0,sizeof(st));
memset(ba,0,sizeof(ba));
memset(match,0,sizeof(match));
for(int i=1;i<=n;i++){
cin>>st[i];
if(st[i]==1){
rel[i].push_back(i+n);
rel[i+n].push_back(i);
}
}
for(int i=1;i<=n;i++){
cin>>ba[i];
if(ba[i]!=1){
num++;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
int x;
cin>>x;
if(j<i)continue;
if(x==1){
if(st[i]==1){
rel[j].push_back(i+n);
rel[i+n].push_back(j);
}
if(st[j]==1){
rel[i].push_back(j+n);
rel[j+n].push_back(i);
}
}
}
}
for(int i=1;i<=n;i++){
if(ba[i]==1)continue;
memset(v,0,sizeof(v));
if(dfs(i))ans++;
}
if(ans==num)cout<<"^_^"<<endl;
else cout<<"T_T"<<endl;
}
int main(int argc, char** argv) {
int t;
cin>>t;
for(int i=1;i<=t;i++){
run();
}
return 0;
}