from heapq import heappop, heappush from collections import deque N, M = map(int, input().split()) g = [[] for _ in range(N)] for _ in range(M): u, v = map(int, input().split()) u, v = u - 1, v - 1 g[u].append(v) g[v].append(u) L = int(input()) R = [-1] * N hq = [] for _ in range(L): j, k = map(int, input().split()) j -= 1 R[j] = k heappush(hq, (-k, j)) while hq: k, u = heappop(hq) k = -k if R[u] > k: continue for v in g[u]: if R[v] < k - 1: R[v] = k - 1 heappush(hq, (-(k - 1), v)) if R[0] != -1: print("No") exit() que = deque([0]) dist = [-1] * N dist[0] = 0 while que: u = que.popleft() for v in g[u]: if dist[v] == R[v] == -1: dist[v] = dist[u] + 1 que.append(v) if dist[-1] == -1: print("No") else: print("Yes") print(dist[-1])