# include using namespace std; const long long MOD = 1e9+7; const int maxn = 1e6+5; vector g[maxn]; int br[maxn],num,vis[maxn],ids=0,group[maxn],to[maxn]; int broi = 0; bool dfs(int v) { broi++; vis[v]=ids; for(auto u:g[v]) { if(vis[u]==ids)continue; to[v] = u; return dfs(u);; } for(auto u:g[v]) { if(u==0)return true; } } void solve() { broi = 0; ids++; int n,m; cin>>n>>m; for(int i = 0;i<=n;i++) { g[i].clear(); br[i] = 0; } int num = 0; int i,j,u,v; for(i = 1;i<=m;i++) { cin>>u>>v; g[u].push_back(v); } for(i = 0;i<=n;i++) { if(g[i].size()==0 || vis[g[i][0]] == ids)continue; num++; for(auto u:g[i]) { vis[u] = ids; br[num]++; group[u] = num; } } ids++; if(dfs(0)&&broi==n+1) { cout<<"YES"<>t; while(t--)solve(); return 0; }