from collections import defaultdict, deque INF = 1 << 60 N, M = map(int, input().split()) adj = defaultdict(list) for _ in range(M): u, v = map(lambda x: int(x)-1, input().split()) adj[u].append(v) adj[v].append(u) L = int(input()) q = deque() for _ in range(L): J, K = map(int, input().split()) J -= 1 q.append((J, K)) monitored = set() while q: v, k = q.popleft() if v in monitored: continue monitored.add(v) if k == 0: continue for to in adj[v]: if to in monitored: continue q.append((to, k-1)) dists = [INF] * N q = deque([0]) dists[0] = 0 while q: v = q.popleft() if v == N-1: print('Yes') print(dists[v]) break for to in adj[v]: if to in monitored: continue if dists[to] > dists[v] + 1: dists[to] = dists[v] + 1 q.append(to) else: print('No')