#include<bits/stdc++.h>
using namespace std;
int fa[200010],k=0;
int input[200010][3];
map<int,int> mymap;
int n,t;
int find(int x){
if (x!=fa[x]) fa[x]=find(fa[x]);
return fa[x];
}
void unionn(int x,int y){
if (find(x)!=find(y)) fa[find(x)]=find(y);
}
bool judge(int x,int y){
return find(x)==find(y);
}
bool isok(){
for (int i=1;i<=200000;i++) fa[i]=i;
memset(input,0,sizeof(input));
mymap.clear();
scanf("%d",&n);
for (int i=1;i<=n;i++){
scanf("%d%d%d",&input[i][0],&input[i][1],&input[i][2]);
if (!input[i][2]) continue;
if (mymap.find(input[i][0])==mymap.end()) mymap[input[i][0]]=++k;
if (mymap.find(input[i][1])==mymap.end()) mymap[input[i][1]]=++k;
unionn(input[i][0],input[i][1]);
}
for (int i=1;i<=n;i++){
if (input[i][2]) continue;
if (judge(input[i][0],input[i][1])) return 0;
}
return 1;
}
int main(){
scanf("%d",&t);
while (t--) if (isok()) printf("YES\n");
else printf("NO\n");
return 0;
}