#!/usr/bin/env python3

from collections import deque
from sys import exit

n, m = [int(x) for x in input().split()]
adj = [[] for _ in range(n)]

for _ in range(m):
    a, b = [int(x) for x in input().split()]
    a -= 1
    b -= 1
    adj[a].append(b)
    adj[b].append(a)

k = len(adj[0])
if n != 2**k or m != k * 2**(k - 1):
    print("no")
    exit()

values = [0]*n
done = [False]*n
layer = set(adj[0])

done[0] = True

for i, nb in enumerate(adj[0]):
    values[nb] = 2**i
    done[nb] = True

while len(layer):
    new_layer = set()
    for cur in layer:
        done[cur] = True
        for nb in adj[cur]:
            if not done[nb]:
                values[nb] |= values[cur]
                new_layer.add(nb)
    layer = new_layer

powers_of_two = [2**i for i in range(k)]
for i in range(n):
    for j in adj[i]:
        if values[i] ^ values[j] not in powers_of_two:
            print("no")
            exit()
print("yes")

