#include <bits/stdc++.h>
using namespace std;
int N, M, K, num[1 << 10], Map[10][10], dp[1 << 10][1 << 10];
int main() {
  scanf("%d%d%d", &N, &M, &K);
  for (int i = 0; i < M; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    a--, b--;
    Map[a][b] = Map[b][a] = 1;
    dp[1 << a | 1 << b][1 << a | 1 << b] = 1;
  }
  for (int i = 1; i < (1 << N); i++) num[i] = num[i >> 1] + (i & 1);
  for (int subm = 0; subm < (1 << N); subm++) {
    for (int leaf = subm; leaf; leaf = (leaf - 1) & subm) {
      for (int add = 0; add < N; add++) {
        if ((1 << add) & subm) continue;
        for (int i = 0; i < N; i++) {
          if (Map[add][i] && ((1 << i) & subm)) {
            int temp = leaf | (1 << add);
            if ((1 << i) & leaf) temp = temp ^ (1 << i);
            if ((temp & ((1 << add) - 1)) == 0)
              dp[subm | (1 << add)][temp] += dp[subm][leaf];
          }
        }
      }
    }
  }
  int ans = 0;
  for (int i = 0; i < (1 << N); i++)
    if (num[i] == K) ans += dp[(1 << N) - 1][i];
  printf("%d\n", ans);
  return 0;
}
