#include using namespace std; using ll=long long; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); ll N,M; cin>>N>>M; vector> G(N); for(int i=0;i>u>>v; u--;v--; G[u].push_back(v); G[v].push_back(u); } vector D(N,-1e18); ll L; cin>>L; for(int i=0;i>J>>K; D[J-1]=max(D[J-1],K); } priority_queue> Q; for(int i=0;i=0)Q.push({D[i],i}); } vector seen(N,0); while(!Q.empty()){ auto [d,p]=Q.top(); Q.pop(); if(seen[p])continue; seen[p]=1; if(d==0)continue; for(int v:G[p]){ if(D[v]>=D[p]-1)continue; if(seen[v])continue; D[v]=D[p]-1; Q.push({D[v],v}); } } if(seen[0]||seen[N-1]){ cout<<"No\n"; return 0; } vector dist(N,1e18); dist[0]=0; queue que; que.push(0); while(!que.empty()){ int p=que.front(); que.pop(); if(seen[p])continue; seen[p]=1; for(int v:G[p]){ if(seen[v])continue; if(dist[v]<=dist[p]+1)continue; dist[v]=dist[p]+1; que.push(v); } } if(dist[N-1]<1e17){ cout<<"Yes\n"; cout<