#include <iostream>
#include <sys/types.h>
using namespace std;
const int MAXN = 1000+10;
int father[MAXN];
int height[MAXN];
void Initial(int n){
for(int i=0;i<n;i++){
father[i] = i;
height[i] = 0;
}
}
int Find(int n){
if(n!=father[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[b] = a;
height[a]++;
}
}
}
int main() {
int n,m;
while(cin>>n>>m){
if(n==0 && m==0){
break;
}
Initial(n);
for(int i=0;i<m;i++){
int a,b;
cin>>a>>b;
Union(a,b);
}
int ans = 0;
for(int i=2;i<=n;i++){
if(Find(i)!=Find(i-1)){
cout<<"NO"<<endl;
break;
}else{
ans++;
}
}
if(ans==n-1){
cout<<"YES"<<endl;
}
}
}
// 64 位输出请用 printf("%lld")