from collections import deque from heapq import * n,m=map(int,input().split()) g=[[]for _ in range(n)] for _ in range(m): u,v=map(int,input().split()) u-=1 v-=1 g[u].append(v) g[v].append(u) l=int(input()) dist=[-1]*n hq=[] for _ in range(l): j,k=map(int,input().split()) j-=1 if dist[j]>k:continue dist[j]=k heappush(hq,(-dist[j],j)) while hq: cost,now=heappop(hq) cost=-cost if cost=0 or dist[nxt]>=0:continue can_reach[nxt]=can_reach[now]+1 q.append(nxt) if can_reach[-1]>=0: print("Yes") print(can_reach[-1]) else: print("No")