#include <bits/stdc++.h>
using namespace std;
int n, m, t, x, y, e[10][10], dp[1024][1024];
int main() {
  scanf("%d%d%d", &n, &m, &t);
  for (int i = 0; i < m; i++) {
    scanf("%d%d", &x, &y);
    x--, y--;
    e[x][y] = e[y][x] = dp[(1 << (x)) | (1 << (y))][(1 << (x)) | (1 << (y))] =
        1;
  }
  int mask = (1 << (n)) - 1;
  for (int s = 0; s <= mask; s++)
    for (int r = s; r; r = (r - 1) & s) {
      if (!dp[s][r]) continue;
      for (x = 0; x < n; x++)
        if (s & (1 << (x)))
          for (y = 0; y < n; y++)
            if (~s & (1 << (y)) && e[x][y]) {
              int o = r | (1 << (y));
              if (r & (1 << (x))) o ^= (1 << (x));
              if (o & ((1 << (n)) - (1 << (y + 1)))) continue;
              dp[s | (1 << (y))][o] += dp[s][r];
            }
    }
  int ans = 0;
  for (int s = 0; s <= mask; s++)
    if (__builtin_popcount(s) == t) ans += dp[mask][s];
  printf("%d\n", ans);
}
