N,M = map(int,input().split(" ")) array = [[False]*N for i in range(N)] flag = {} for i in range(M): Sa,Sb = map(int,input().split(" ")) array[Sa][Sb] = True array[Sb][Sa] = True flag[Sa] = 0 flag[Sb] = 0 #まず連結グラフか判定 def dfs(vertex): global flag global N global array if (flag[vertex] == 1): return 0 flag[vertex] = 1 for i in range(N): if array[vertex][i]: #頂点vertexからiへの辺が存在 dfs(i) dfs(Sa) for val in flag.values(): if val == 0: print("NO") exit(0) #--------ここまでくれば連結グラフであることが保証hoshou# #オイラーグラフになっているか判断# end = 0 for i in range(N): num = array[i].count(True) if num%2 == 1: end += 1 if end >= 3: print("NO") exit(0) print("YES")