#include using namespace std; int n, m, s, t, k; vector dijkstra(vector>> &g, int x) { vector dist(n, 1000000000000000000); vector visit(n, false); priority_queue, vector>, greater>> que; dist[x] = 0LL; que.push({dist[x], x}); while (!que.empty()) { int v = que.top().second; que.pop(); if (visit[v]) { continue; } visit[v] = true; for (auto p : g[v]) { int next_v = p.first; long long d = p.second; if (dist[next_v] > dist[v] + d) { dist[next_v] = dist[v] + d; que.push({dist[next_v], next_v}); } } } return dist; } int main() { cin >> n >> m >> s >> t >> k; s--; t--; vector>> g(n); for (int i = 0; i < m; i++) { int a, b; cin >> a >> b; a--; b--; g[a].push_back({b, 1LL}); g[b].push_back({a, 1LL}); } vector dist = dijkstra(g, s); if (abs(dist[t] - k) % 2 == 0) { if (dist[t] <= k) { cout << "Yes" << endl; } else { cout << "Unknown" << endl; } } else { cout << "No" << endl; } }