#include <iostream>
using namespace std;

int father[1001];
int height[1001];


void Initial(int n)
{
    for(int i=1;i<=n;i++)
    {
        father[i]=i;
        height[i]=0;
    }
}

//两树合并为同一集合
void Union(int a,int b)
{
    a=father[a];
    b=father[b];
    if(father[a]!=father[b])
    {
        if(height[a]>height[b])father[b]=a;
        else if(height[a]<height[b])father[a]=b;
        else
        {
            father[a]=b;
            height[b]++;
        }
    }
}

//找该树的根节点
int Find(int i)
{
    if(i==father[i])return i;
    else
    return Find(father[i]);
}



int main() {
    int n,m;
    while (cin >> n>>m) { 
        if(n==0&&m==0)break;
        Initial(n);
        for(int i=1;i<=m;i++)
        {
            int a,b;cin>>a>>b;
            Union(a,b);
        }
        int answer=0;
        for(int i=1;i<=n;i++)
        {
            if(i==Find(i))answer++;
        }
        if(answer==1)cout<<"YES"<<endl;
        else
         cout<<"NO"<<endl;

    }
}