import collections
m=int(input())
fa=collections.defaultdict(int)
def find(x):
if x not in fa:
fa[x]=x
return x
elif fa[x]==x:
return x
else:
fa[x]=find(fa[x])
return fa[x]
def union(a,b):
fa[find(a)]=find(b)
ans=[]
for i in range(m):
fa=collections.defaultdict(int)
n=int(input())
ls=[]
ret=True
for j in range(n):
tp=input().split()
if tp==[]:
tp=input().split()
if not ret:
continue
a,b,k=int(tp[0]),int(tp[1]),int(tp[2])
if k==1:
if find(a)!=find(b):
union(a,b)
else:
if find(a)==find(b):
ret=False
ls.append((a,b))
for a,b in ls:
if not ret:
break
if find(a)==find(b):
ret=False
break
if ret:
ans.append("YES")
else:
ans.append("NO")
for a in ans:
print(a)