#include using namespace std; int main(){ int n,m,mx = 2e5+2; cin >> n >> m; vector> G(n); for (int i(0),a,b;i < m;++i){ cin >> a >> b; --a,--b; G[a].emplace_back(b),G[b].emplace_back(a); } int q; cin >> q; vector> A(mx); vector cant(n); for (int i(0),a,b;i < q;++i){ cin >> a >> b; A[b+1].emplace_back(a-1),cant[a-1] = max(cant[a-1],b+1); } for (int i(mx-1);i;--i) for (int k:A[i]) if (cant[k]==i) for (int j:G[k]) if (cant[j] dist(n,1e9); queue que; dist[0] = 0,que.emplace(0); while(!que.empty()){ int x = que.front(); que.pop(); for (int y:G[x]) if (cant[y]==0&&dist[y]>dist[x]+1) dist[y] = dist[x]+1,que.emplace(y); } if (dist[n-1]==1e9) cout << "No" << endl; else cout << "Yes" << endl << dist[n-1] << endl; }