#include #include #include #include #include #define rep(i,n) for(int i=0; i; using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int N, M, K; cin >> N >> M >> K; vector I; I.push_back(0); vector w; rep(i,N){ int z = I.size(); w.push_back(z); rep(j,z*K) I.push_back(I[j] + 1); } vector dp(I.size() * N); vector> E(N, vector(N)); rep(i,M){ int u,v; cin >> u >> v; u--; v--; E[u][v] = E[v][u] = 1; } rep(s,N) dp[w[s]*N+s] += 1; rep(i,I.size()) rep(p,N){ rep(q,N) if(E[p][q]){ int j = i + w[q]; if(j >= I.size() || I[i] + 1 != I[j]) continue; dp[j*N+q] += dp[i*N+p]; } } Modint ans = 0; rep(i,N) ans += dp[I.size()*N-i-1]; cout << ans.val() << '\n'; return 0; }