#include<bits/stdc++.h>
using namespace std;
const int N=1e5;
int f[200005];
struct p
{
int l,j,e;
}a[200005];
int cmp(p q,p w)
{
return q.e>w.e;
}
int find(int x)
{
if(f[x]!=x)f[x]=find(f[x]);
return f[x];
}
void solve(int n)
{
map<int,int>m;
int temp=1;
sort(a,a+n,cmp);
for(int i=0;i<n;i++)
{
if(!m[a[i].l])
{
m[a[i].l]=temp;
temp++;
}
if(!m[a[i].j])
{
m[a[i].j]=temp;
temp++;
}
}
for(int i=0;i<n;i++)
{
if(a[i].e!=0) f[find(m[a[i].l])]=find(m[a[i].j]);
}
for(int i=0;i<n;i++)
{
if(a[i].e==0)
{
if(find(f[m[a[i].l]])!=find(f[m[a[i].j]])){
cout<<"YES"<<endl;
return;
}
else
{
cout<<"NO"<<endl;
return;
}
}
}
cout<<"YES"<<endl;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
memset(f,0,sizeof(int));
for(int i=0;i<n;i++)
{
cin>>a[i].l >>a[i].j >>a[i].e;
}
for(int i=0;i<n;i++) f[i]=i;
solve(n);
}
return 0;
}