#include<bits/stdc++.h>
using namespace std;
int ans,an,l[10001],r[10001],p[100001],a[1001][10001],t,n,a1;
bool vis[10001];
int match(int x)
{
for(int i=1;i<=n;++i)
{
if(a[x][i]&&!vis[i]&&l[i])
{
vis[i]=1;
if(!p[i]||match(p[i]))
{
p[i]=x;
return 1;
}
}
}
return 0;
}
void work()
{
memset(l,0,sizeof(l));
memset(r,0,sizeof(r));
memset(p,0,sizeof(p));
memset(a,0,sizeof(a));
an=0,ans=0;
for(int i=1;i<=n;++i)
{
cin>>a1;
if(a1==1)
l[i]=1;
else r[i]=1;
}
for(int i=1;i<=n;++i)
{
cin>>a1;
if(a1==1&&l[i]==1)
r[i]=1,a[i][i]=1;
}
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
{
cin>>a1;
if(a[i][j]!=1&&a1&&l[j]) a[i][j]=1;
}
for(int i=1;i<=n;++i)
{
if(r[i])
{
memset(vis,0,sizeof(vis));
if(!match(i))
{
cout<<"T_T"<<endl;
return;
}
}
}
cout<<"^_^"<<endl;
return;
}
int main()
{
cin>>t>>n;
while(t--){
work();
}
}