#include <bits/stdc++.h> using namespace std; const int maxn = 3E2 + 5; int G1[maxn][maxn], G2[maxn][maxn], gx[maxn], gy[maxn], to[maxn], n, m, x, y, T, kase; bool check() { for (int i = n - 1; i >= 0; i--) { memset(to, 0, sizeof(to)); for (int j = gy[i] - 1; j >= 0; j--) for (int k = gx[G2[i][j]] - 1; k >= 0; k--) to[G1[G2[i][j]][k]]++; for (int j = 0; j < n; j++) if (to[j] && to[j] != gy[i]) return false; } return true; } int main(int argc, char const *argv[]) { ios::sync_with_stdio(false); cin.tie(NULL); cin >> T; while (T--) { cin >> n >> m; memset(G1, 0, sizeof(G1)); memset(G2, 0, sizeof(G2)); memset(gx, 0, sizeof(gx)); memset(gy, 0, sizeof(gy)); while (m--) { cin >> x >> y; G1[x][gx[x]++] = y; G2[y][gy[y]++] = x; } cout << "Case #" << ++kase << ": " << (check() ? "YES" : "NO") << endl; } return 0; }