#include using namespace std; int main() { int N, M; cin >> N >> M; vector> g(N); int u, v; for (int i = 0; i < M; ++i) { cin >> u >> v; u--, v--; g[u].push_back(v); g[v].push_back(u); } int L; cin >> L; priority_queue> que; int J, K; vector ng(N, -1); for (int i = 0; i < L; ++i) { cin >> J >> K; J--; que.emplace(K, J); } while (que.size()) { int a = que.top().first, b = que.top().second; que.pop(); if (ng[b] != -1) continue; ng[b] = a; if (a == 0) continue; for (auto x : g[b]) { if (ng[a] != -1) continue; que.emplace(a - 1, x); } } if (ng[0] != -1) { cout << -1 << endl; return 0; } vector len(N, -1); len[0] = 0; queue que2; que2.push(0); while (que2.size()) { int tmp = que2.front(); que2.pop(); for (auto x : g[tmp]) { if (len[x] != -1) continue; if (ng[x] != -1) continue; que2.push(x); len[x] = len[tmp] + 1; } } if (len[N - 1] == -1) cout << "No" << endl; else { cout << "Yes" << endl; cout << len[N - 1] << endl; } return 0; }