#include <bits/stdc++.h>
#pragma optimization_level 3
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
using namespace std;
const long long MAX5 = 3e+5 + 7;
const long long MAX7 = 1e+7 + 7;
const long long MAXN = MAX7;
const long long INF = 0x7f7f7f7f7f7f7f7f;
const int INFi = 0x7f7f7f7f;
const long long MOD = 1e9 + 7;
long long T = 1;
long long n, x, k, p, m, y;
string second, t;
long double w;
long long a, b;
long long vis[300000], rec[300000], ind[300000], no = 0;
vector<long long> adj[300000];
vector<pair<long long, pair<long long, long long>>> rem;
stack<long long> Stack;
void TSUtil(int v) {
  vis[v] = 1;
  for (auto it : adj[v])
    if (!vis[it]) TSUtil(it);
  Stack.push(v);
}
void TS() {
  for (int i = 1; i <= n; i++)
    if (!vis[i]) TSUtil(i);
  while (Stack.empty() == 0) {
    ind[Stack.top()] = no++;
    Stack.pop();
  }
}
bool CycleUtil(int v) {
  if (vis[v] == 0) {
    vis[v] = 1, rec[v] = 1;
    for (auto it : adj[v]) {
      if (!vis[it] && CycleUtil(it))
        return 1;
      else if (rec[it])
        return 1;
    }
  }
  rec[v] = 0;
  return 0;
}
bool Cycle() {
  for (int i = 1; i <= n; i++)
    if (CycleUtil(i)) return 1;
  return 0;
}
void MAIN() {
  cin >> n >> m;
  no = 0;
  rem.clear();
  for (long long i = 0; i <= n; i++)
    adj[i].clear(), vis[i] = 0, ind[i] = 0, rec[i] = 0;
  for (long long i = 0; i < m; i++) {
    cin >> p >> x >> y;
    if (p) {
      adj[x].push_back(y);
    }
    rem.push_back({p, {x, y}});
  }
  if (Cycle() == 0) {
    for (long long i = 1; i <= n; i++) vis[i] = 0;
    TS();
    cout << "YES\n";
    for (auto it : rem) {
      if (it.first == 1) {
        cout << it.second.first << " " << it.second.second;
        cout << "\n";
        continue;
      }
      if (ind[it.second.second] > ind[it.second.first]) {
        cout << it.second.first << " " << it.second.second;
        cout << "\n";
      } else {
        cout << it.second.second << " " << it.second.first;
        cout << "\n";
      }
    }
  } else {
    cout << "NO\n";
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cout << fixed;
  cout << setprecision(12);
  ;
  mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
  ;
  cin >> T;
  while (T--) {
    MAIN();
  }
  return 0;
}
