# 頂点倍化 N, M = map(int, input().split()) edges = [[] for i in range(N*2+1)] for i in range(M): a, b = map(int, input().split()) edges[a].append(b+N) edges[b+N].append(a) edges[b].append(a+N) edges[a+N].append(b) from collections import deque def bfs(start, goal): que = deque() que.append(start) visited = [0]*(N*2+1) visited[start] = 0 while que: current = que.popleft() if current == goal: return 1 for nxt in edges[current]: if visited[nxt] == 0: visited[nxt] = 1 que.append(nxt) return 0 test = 1 for i in range(1, N+1): calc = bfs(i, i+N) #print(i, calc) test *= calc if test == 0: break if test == 1: print('Yes') else: print('No')