#include #include #include #include int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int N, M, K; std::cin >> N >> M >> K; std::vector> adj(N + 1), radj(N + 1); for (int i = 0; i < M; ++i) { int u, v; std::cin >> u >> v; adj[u].push_back(v); radj[v].push_back(u); } std::vector fwd(N + 1, 0), rev(N + 1, 0); { std::queue q; q.push(1); fwd[1] = 1; while (!q.empty()) { int u = q.front(); q.pop(); for (int v : adj[u]) { if (!fwd[v]) { fwd[v] = 1; q.push(v); } } } } { std::queue q; q.push(1); rev[1] = 1; while (!q.empty()) { int u = q.front(); q.pop(); for (int v : radj[u]) { if (!rev[v]) { rev[v] = 1; q.push(v); } } } } for (int i = 1; i <= N; ++i) { if (!fwd[i] || !rev[i]) { std::cout << "No\n"; return 0; } } std::vector co(N + 1, -1); co[1] = 0; std::queue q; q.push(1); int g = 0; while (!q.empty()) { int u = q.front(); q.pop(); for (int v : adj[u]) { if (co[v] == -1) { co[v] = co[u] + 1; q.push(v); } else { int diff = co[u] + 1 - co[v]; g = std::gcd(g, std::abs(diff)); } } } if (g == 0) { std::cout << "No\n"; return 0; } if (g % 2 == 1) { std::cout << "Yes\n"; } else { std::cout << "No\n"; } return 0; }