#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
map<ll, ll> f;
ll ne[1000005][2];
ll getf(ll a) { return f[a] == a ? a : f[a] = getf(f[a]); }
void merge(ll a, ll b) { f[b] = getf(a); }
int main(void) {
ll t;
scanf("%lld", &t);
while (t--) {
f.clear();
memset(ne, 0, sizeof(ne));
ll n, cnt = 0;
scanf("%lld", &n);
while (n--) {
ll i, j, e;
scanf("%lld %lld %lld", &i, &j, &e);
if (f.count(i) == 0) f[i] = i;
if (f.count(j) == 0) f[j] = j;
if (e == 1) {
if (getf(i) != getf(j)) merge(i, j);
} else {
cnt++;
ne[cnt][0] = i, ne[cnt][1] = j;
}
}
bool flag = 1;
for (ll i = 1; i <= cnt; i++) {
if (getf(ne[i][0]) == getf(ne[i][1])) {
flag = 0;
break;
}
}
puts(flag ? "YES" : "NO");
}
return 0;
}