#include <iostream>
#include <vector>

using namespace std;

int find_parent(vector<int> vec, int a)
{
    if(vec[a] == a) return a;
    else return find_parent(vec, vec[a]);
}

void union_set(vector<int> &vec, int a, int b)
{
    int ax = find_parent(vec, a);
    int bx = find_parent(vec, b);
    if(ax != bx) vec[bx] = ax;
}

int main() 
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n, m;
    while(cin >> n >> m)
    {
        if(n == 0 && m == 0) break;
        vector<int> vec(n + 1, 0);
        for(int i = 1; i <= n; i++) vec[i] = i;
        int a, b;
        int sum = 0;
        for(int i = 0; i < m; i++)
        {
            cin >> a >> b;
            if(find_parent(vec, a) != find_parent(vec, b))
            {
                union_set(vec, a, b);
                sum++;
            }
        }
        if(sum == n - 1) cout << "YES" << "\n";
        else cout << "NO" << "\n";
    }
    return 0;
}