#include<bits/stdc++.h>
using namespace std;
const int MAXN=1000001;
int fa[MAXN];
int x[100001],y[100001];
int e[100001];
int f[100001];
inline int read()
{
int x=0,ff=1;
char c=getchar();
while(c<'0'||c>'9'){if(c=='-') ff=-1;c=getchar();}
while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
return x*ff;
}
void write(int x)
{
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
}
void chu(int size)
{
for(int i=1;i<=size;i++)
fa[i]=i;
return;
}
int find(int t)
{
if(t!=fa[t])
fa[t]=find(fa[t]);
return fa[t];
}
void w1(int t,int o)
{
t=find(t);
o=find(o);
fa[t]=o;
}
int main()
{int n;
cin>>n;
int m;
bool l;
bool k=0;
int s=0;
for(int i=1;i<=n;i++)
{
cin>>m;
chu(n);
for(int j=1;j<=m;j++)
{
x[i]=read();
y[i]=read();
l=read();
if(l==1)
{
w1(x[i],y[i]);
}
if(l==0)
{
e[s]=x[i];
f[s]=y[i];
s++;
}
}
if(s==0)
{
cout<<"YES"<<endl;
continue;
}
for(int v=1;v<=s;v++)
{
if(find(e[v])==find(f[v]))
{
cout<<"NO"<<endl;
k=1;
break;
}
}
if(k==0)
{
cout<<"YES"<<endl;
}
s=0;
k=0;
}
return 0;
}