#N,M=map(int, input().split()) n,w = map(int,input().split()) g = [[] for i in range(n)] for i in range(w): x,y = map(int,input().split()) x-=1;y-=1 g[x].append(y) g[y].append(x) color = [0] * n #color[i]:点iの色(1 or -1)。但し塗られていないときは0とする def f(v,c): #頂点vに隣接する頂点全てを塗るあるいは判定する color[v] = c for i in range(len(g[v])): if color[ g[v][i] ] == c: return False elif color[ g[v][i] ] == 0 and not f(g[v][i],-c): #(g[v][i]がまだ塗られていない かつ そこを-cで塗っても問題ない) ではないなら return False return True k = 1 #判定 1ならYes -1ならNo for i in range(n): if color[i] == 0: if not f(i,1): k = -1 if k == 1: print('Yes') else: print('No')