import sys sys.setrecursionlimit(10**6) n,m = map(int,input().split()) ue=[[] for i in range(n)] shita=[[] for i in range(n)] for i in range(m): x,y=map(int,input().split()) x-=1 y-=1 ue[x].append(y) shita[y].append(x) ue[y].append(x) shita[x].append(y) fu = [0]*n fs = [0]*n def cal(x,f): if f == 0: fu[x] = 1 for i in ue[x]: if fs[i] == 0: cal(i,1) else: fs[x] = 1 for i in shita[x]: if fu[i] == 0: cal(i,0) for i in range(n): if fu[i] == 0 and fs[i] == 0: cal(i,0) if all(fu) and all(fs): print('Yes') else: print('No')