#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define MAX_N 200010 #define PI 3.141592653589 #define ESP 1e-20 #define BS 10 #define MOD 1000000007 #define ZERO 10001 #define YJSNPI 810 #define INF (1LL << 50) #define ADD(a, b) a = (a + (ll)b) % MOD #define MUL(a, b) a = (a * (ll)b) % MOD #define MAX(a, b) a = max(a, b) #define MIN(a, b) a = min(a, b) using namespace std; typedef pair pi; typedef long long ll; int N, M, K; vector E[MAX_N]; //bool used[MAX_N]; bool loop(int at, vector goal, int life) { goal[at] = 0; if(goal == vector(N, 0)) return true; if(life <= 0) return false; bool res = false; for(int i = 0; i < E[at].size(); i++) { res = max(res, loop(E[at][i], goal, life - 1)); } return res; } int main() { cin >> N >> M >> K; for(int i = 0; i < M; i++) { int from, to; cin >> from >> to; from--; to--; E[from].push_back(to); E[to].push_back(from); } vector ans(N, 0); for(int i = N - 1; i >= 0; i--) { ans[i] = 1; if(!loop(0, ans, K)) { ans[i] = 0; } } ll res = 0; for(int i = 0; i < N; i++) { if(ans[i]) res += (1LL << i) - 1; } cout << res << endl; }