#include <iostream> using namespace std; const int N = 100010; int father[N]; int height[N]; void initial(int n) { for (int i = 1; i <= n; i++) { father[i] = i; height[i] = 0; } return; } int find(int n) { if (father[n] != n) father[n] = find(father[n]); return father[n]; } void Union(int a, int b) { a = find(a); b = find(b); if (a != b) { if (height[a] < height[b]) father[a] = b; else if (height[a] > height[b]) father[b] = a; else { father[a] = b; height[b]++; } } } int main() { int n, m; while (cin >> n >> m) { if (n == 0) break; initial(n); while (m--) { int a, b; cin >> a >> b; Union(a, b); } int ans = 0; for (int i = 1; i <= n; i++) { if (find(i) == i) ans++; } if(ans==1) cout<<"YES"<<endl; else cout<<"NO"<<endl; } } // 64 位输出请用 printf("%lld")