#include <bits/stdc++.h>
using namespace std;
const int N = 10;
int n, m, k, ans = 0, zn, z[N], deg[N];
vector<int> c[N];
inline void go(int _i, int _j, int mask, int cnt) {
  zn++;
  for (int i = _i; i < zn; i++) {
    const auto &a = c[z[i]];
    const int cnt1 = cnt + 1 - (deg[i] == 1);
    if (cnt1 > k || cnt1 + (n - zn - 1) < k) continue;
    deg[i]++;
    for (int v, j = (i == _i ? _j : 0); j < a.size(); j++) {
      if (!((mask >> (v = a[j])) & 1)) {
        if (zn == n - 1)
          ans += cnt1 == k;
        else {
          deg[zn] = 1, z[zn] = v;
          go(i, j + 1, mask | (1 << v), cnt1);
          deg[zn] = 0;
        }
      }
    }
    deg[i]--;
  }
  zn--;
}
int main() {
  cin >> n >> m >> k;
  while (m--) {
    int a, b;
    cin >> a >> b, a--, b--;
    c[a].push_back(b);
    c[b].push_back(a);
  }
  z[zn] = 0;
  go(0, 0, 1, 1);
  cout << ans << endl;
  fprintf(stderr, "time = %.2f sec\n", 1. * clock() / CLOCKS_PER_SEC);
}
