#include #include using namespace std; //と思ったら僕がバカでしたごめんなさいリバーシのルールを忘れていましたごめんなさい int wf[60][60]; int dp[16][1<<16]; int tsp(vector u){ for(int i = 0 ; i < u.size() ; i++) for(int j = 0 ; j < (1<>j & 1 ) dp[k][i|(1<> N >> M >> K; for(int i = 0 ; i < M ; i++){ int a,b; cin >> a >> b; a--,b--; wf[a][b] = wf[b][a] = 1; } for(int i = 0 ; i < 60 ; i++) for(int j = 0 ; j < 60 ; j++) for(int k = 0 ; k < 60 ; k++) wf[j][k] = min(wf[j][i]+wf[i][k],wf[j][k]); vector go; long long res = 0; for(int i = N - 1 ; i >= 0 ; i--){ go.push_back(i); if( tsp(go) <= K ){ res += (1ll<