#include <bits/stdc++.h>
using namespace std;
int n, m, k;
struct Edge {
  int u;
  int v;
} e[1000000];
int dp[3000][3000];
bool Judge1(int x, int y) {
  for (int i = 0; i < n; i++)
    if (!(x & (1 << i)) && (y & (1 << i))) return false;
  return true;
}
bool Judge2(int u, int v, int x, int y) {
  if ((1 << (u - 1)) & x && !((1 << (v - 1)) & x)) return true;
  return false;
}
int Count(int x) {
  int ret = 0;
  for (int i = 0; i < n; i++)
    if ((1 << i) & x) ret++;
  return ret;
}
void PUT(int x) {
  for (int i = 0; i < n; i++)
    if (x & (1 << i))
      cout << 1;
    else
      cout << 0;
}
int ans;
int main() {
  cin >> n >> m >> k;
  for (int i = 1; i <= m; i++) {
    cin >> e[i].u >> e[i].v;
    int temp = 0;
    temp |= (1 << (e[i].u - 1));
    temp |= (1 << (e[i].v - 1));
    dp[temp][temp] = 1;
  }
  for (int i = 0; i <= (1 << n) - 1; i++)
    for (int j = 0; j <= (1 << n) - 1; j++)
      if (Judge1(i, j))
        for (int g = 1; g <= m; g++) {
          if (Judge2(e[g].u, e[g].v, i, j)) {
            int temp = j;
            temp |= (1 << (e[g].v - 1));
            if (temp & (1 << (e[g].u - 1))) temp ^= (1 << (e[g].u - 1));
            bool pd = false;
            for (int q = e[g].v + 1; q <= n; q++)
              if ((1 << (q - 1)) & temp) {
                pd = true;
                break;
              }
            int st = i;
            st |= 1 << (e[g].v - 1);
            if (!pd) dp[st][temp] += dp[i][j];
          } else if (Judge2(e[g].v, e[g].u, i, j)) {
            swap(e[g].v, e[g].u);
            int temp = j;
            temp |= (1 << (e[g].v - 1));
            if (temp & (1 << (e[g].u - 1))) temp ^= (1 << (e[g].u - 1));
            bool pd = false;
            for (int q = e[g].v + 1; q <= n; q++)
              if ((1 << (q - 1)) & temp) {
                pd = true;
                break;
              }
            int st = i;
            st |= 1 << (e[g].v - 1);
            if (!pd) dp[st][temp] += dp[i][j];
          }
        }
  for (int i = 0; i <= (1 << n) - 1; i++)
    for (int j = 0; j <= (1 << n) - 1; j++) {
      if (Count(j) == k && (i == ((1 << n) - 1))) ans += dp[i][j];
    }
  cout << ans << endl;
  return 0;
}
