#include <bits/stdc++.h>
using namespace std;
const int N = 10;
long long dp[1 << N][1 << N], cnt[1 << N];
int g[N][N];
int n, m, k;
bool out(int x, int y) { return (x & y) == 0; }
int main() {
  cin >> n >> m >> k;
  while (m--) {
    int u, v;
    cin >> u >> v;
    u--;
    v--;
    g[u][v] = g[v][u] = 1;
    dp[(1 << u) | (1 << v)][(1 << u) | (1 << v)] = 2;
  }
  for (int i = 0; i < (1 << n - 1); ++i) {
    cnt[i << 1] = cnt[i];
    cnt[i << 1 | 1] = cnt[i] + 1;
  }
  for (int i = 0; i < (1 << n); ++i)
    if (cnt[i] >= 2) {
      for (int j = 0; j <= i; ++j)
        if ((i & j) == j)
          if (dp[i][j]) {
            dp[i][j] /= cnt[j];
            for (int p = 0; p < n; ++p)
              if (((1 << p) & i) == 0) {
                for (int q = 0; q < n; ++q)
                  if (g[p][q] && ((1 << q) & i)) {
                    if (((1 << q) & j))
                      dp[i | (1 << p)][(j ^ (1 << q)) | (1 << p)] += dp[i][j];
                    else
                      dp[i | (1 << p)][j | (1 << p)] += dp[i][j];
                  }
              }
          }
    }
  long long ans = 0;
  for (int i = 0; i < (1 << n); ++i)
    if (cnt[i] == k) {
      ans += dp[(1 << n) - 1][i];
    }
  cout << ans << endl;
  return 0;
}
