#!/usr/bin/env python3


from math import log2

from collections import deque


def is_pow_2(n):
    return n & (n - 1) == 0


def bfs(adj):
    address = [None] * len(adj)
    address[0] = 0
    count = [0] * len(adj)
    count[0] = 2

    q = deque()

    for i, v in enumerate(adj[0]):
        address[v] = 2**i

        for u in adj[v]:
            if count[u] == 0:
                address[u] = 0
            count[u] += 1

            if count[u] <= 2:
                address[u] |= address[v]

                if count[u] == 2:
                    q.append(u)

    while q:
        v = q.popleft()

        for u in adj[v]:
            if u in adj[0] or u == 0:
                continue

            if count[u] == 0:
                q.append(u)
                address[u] = 0

            if count[u] < 2:
                address[u] |= address[v]

            count[u] += 1

            if count[u] >= 2:
                if not is_pow_2(address[u] ^ address[v]):
                    return False

    if any(map(lambda x: x is None, address)):
        return False

    for v in range(len(adj)):
        for u in adj[v]:
            if not is_pow_2(address[v] ^ address[u]):
                return False
    return True


def main():
    n, m = map(int, input().split())

    if not is_pow_2(n):
        print("no")
        return

    base = int(log2(n))

    adj = [[] for _ in range(n)]

    for _ in range(m):
        a, b = map(int, input().split())
        a -= 1
        b -= 1

        if a == b:
            print("no")
            return

        adj[a].append(b)
        adj[b].append(a)

    if any(len(a) != base for a in adj):
        print("no")
        return

    print("yes" if bfs(adj) else "no")


if __name__ == "__main__":
    main()
