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=[] jk=[] for _ in range(l): jk.append(tuple(map(int,input().split()))) jk.sort(reverse=True,key=lambda x:x[-1]) for i in range(l): j,k=jk[i] 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: exit(print("No")) can_reach[0]=0 q=deque() q.append(0) while q: now=q.popleft() for nxt in g[now]: if can_reach[nxt]>=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")