#include <bits/stdc++.h>
bool map[21][21];
int i, j, k, n, m, lim, tot, l, t, c[1 << 10];
long long f[1 << 10][1 << 10], ans;
int main() {
  scanf("%d%d%d", &n, &m, &lim);
  tot = 1 << n;
  memset(map, 0, sizeof(map));
  memset(f, 0, sizeof(f));
  for (i = 0; i < tot; i++)
    for (j = i, c[i] = 0; j; j >>= 1) c[i] += j & 1;
  for (i = 1; i <= m; i++) {
    scanf("%d%d", &j, &k);
    map[j][k] = map[k][j] = 1;
    f[(1 << (j - 1)) + (1 << (k - 1))][(1 << (j - 1)) + (1 << (k - 1))] = 1;
  }
  for (i = 1; i < tot; i++)
    for (j = 1; j < i; j++) {
      if (c[i] <= c[j]) continue;
      for (k = j, l = 1; k; k >>= 1, l++) {
        if (!(k & 1)) continue;
        for (t = 1; t <= n; t++)
          if (map[t][l] && (i >> (t - 1)) % 2 && (j >> (t - 1)) % 2 == 0)
            f[i][j] +=
                f[i - (1 << (l - 1))][j - (1 << (l - 1))] +
                f[i - (1 << (l - 1))][j - (1 << (l - 1)) + (1 << (t - 1))];
      }
      f[i][j] /= c[j];
    }
  for (i = 1; i < tot; i++) {
    if (c[i] == lim) ans += f[tot - 1][i];
  }
  printf("%I64d\n", ans);
}
