#include <bits/stdc++.h>
using namespace std;
long long f[1 << 10][1 << 10], ans;
int n, m, K, u[100], v[100], x, tmp;
int main() {
  scanf("%d%d%d", &n, &m, &K);
  for (int i = (1); i <= int(m); i++) {
    scanf("%d%d", &u[i], &v[i]);
    u[i + m] = --v[i];
    v[i + m] = --u[i];
  }
  for (int i = (1); i <= int(2 * m); i++)
    if (!u[i]) f[1 << v[i] | 1][1 << v[i] | 1] = 1;
  for (int i = (1); i <= int((1 << n) - 1); i++)
    for (int j = i; j; j = (j - 1) & i)
      if (f[i][j]) {
        for (int k = (1); k <= int(2 * m); k++)
          if ((i >> u[k] & 1) && !(i >> v[k] & 1) &&
              (j & (~(1 << u[k]))) < (1 << v[k]))
            f[i | (1 << v[k])][(j & (~(1 << u[k]))) | (1 << v[k])] += f[i][j];
      }
  for (int i = (1); i <= int((1 << n) - 1); i++) {
    tmp = 0;
    x = i;
    while (x) {
      tmp += x & 1;
      x >>= 1;
    }
    if (tmp ^ K) continue;
    ans += f[(1 << n) - 1][i];
  }
  printf("%lld\n", ans);
  return 0;
}
