#include<bits/stdc++.h>
using namespace std;
int n;
int t;
int a[305][305];
int match[5005];
int head[40005];
int cnt;
struct edge
{
int to;
int nex;
}e[5005];
void add(int x,int y)
{
e[++cnt]=(edge)
{
y,head[x]
};
head[x]=cnt;
}
int vis[605];
inline bool dfs(int x)
{
for(int i=head[x];i;i=e[i].nex)
{
int v=e[i].to;
if(vis[v]) continue;
vis[v]=1;
if(match[v]==0)
{
match[v]=x;
return 1;
}
if(match[v]&&dfs(match[v]))
{
match[v]=x;
return 1;
}
}
return 0;
}
int main()
{
cin>>t;
for(int kim=1;kim<=t;kim++)
{
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
if(a[i][j]) add(i,n+j);
}
int ans=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=2*n;j++)
{
vis[j]=0;
}
if(dfs(i))
{
ans++;
}
}
if(ans==n) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
for(int i=1;i<=2*n;i++)
{
head[i]=0;
}
for(int j=1;j<=cnt;j++)
{
e[j].nex=0;
e[j].to=0;
}
for(int i=1;i<=2*n;i++)
{
match[i]=0;
}
cnt=0;
}
return 0;
}