#include #include #include using namespace std; int main() { int n, m, k; cin >> n >> m >> k; vector> g(n + 1); for (int i = 0; i < m; ++i) { int u, v; cin >> u >> v; g[u].push_back(v); } int mod = 1 << k; vector> d(n + 1, vector(mod, false)); queue> q; q.push({1, 0}); while (!q.empty()) { auto [u, r] = q.front(); q.pop(); int nr = (r + 1) % mod; for (int v : g[u]) { if (!d[v][nr]) { d[v][nr] = true; q.push({v, nr}); } } } bool f = true; int t = mod - 1; for (int i = 1; i <= n; ++i) { int c = 0; for (int r = 0; r < mod; ++r) { if (d[i][r]) c |= r; } if (c != t) { f = false; break; } } cout << (f ? "Yes" : "No") << endl; return 0; }