#2 TLE
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
inline int read(){
int x=0;char c=getchar();
while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9'){
x=x*10+c-'0';
c=getchar();
}
return x;
}
int T,n,a[1000006],b[1000006],fa[2000006],cnt;bool c[1000006],flag;
map<int,int> m;
inline int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}
inline int merge(int a,int b){return fa[find(a)]=find(b);}
int main(){
T=read();
while(T--){
n=read();cnt=0;for(int i=1;i<=(n<<1);++i) fa[i]=i;flag=false;
for(int i=1;i<=n;++i)
m[a[i]=read()]=++cnt,m[b[i]=read()]=++cnt,c[i]=read();
for(int i=1;i<=n;++i)
if(c[i])
merge(m[a[i]],m[b[i]]);
for(int i=1;i<=n;++i)
if(!c[i]&&(find(m[a[i]])==find(m[b[i]])))
{puts("NO");flag=true;break;}
if(!flag) puts("YES");
}
return 0;
}