#include<bits/stdc++.h>
using namespace std;constint N =2e6+10;int n, m, f[N];
unordered_map<int,int> mp;//无序 插入查询更快!!!structQuery{
int x, y, e;} qu[N];intget(int x){
if(mp.count(x)==0) mp[x]=++ n;return mp[x];}intfind(int x){
if(f[x]== x)return x;return f[x]=find(f[x]);}intmain(){
int T;scanf("%d",&T);while(T --){
mp.clear();
n =0;scanf("%d",&m);int x, y, e;for(int i =0; i < m; i ++){
scanf("%d %d %d",&x,&y,&e);
qu[i]={
get(x),get(y), e };}for(int i =1; i <= n; i ++) f[i]= i;for(int i =0; i < m; i ++){
if(qu[i].e){
x =find(qu[i].x), y =find(qu[i].y);
f[x]= y;}}int flag =1;for(int i =0; i < m; i ++){
if(qu[i].e ==0){
x =find(qu[i].x), y =find(qu[i].y);if(x == y){
flag =0;break;}}}if(flag)printf("YES\n");elseprintf("NO\n");}return0;}