#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-10;
const double PI = acos(-1.0);
template <class T>
T gcd(T a, T b) {
  for (T c; b; c = a, a = b, b = c % b)
    ;
  return a;
}
template <class T>
void out(const vector<T> &a) {
  for (int i = 0; i < ((int)(a).size()); ++i) cout << a[i] << " ";
  cout << endl;
}
int countbit(int n) { return n == 0 ? 0 : 1 + countbit(n & (n - 1)); }
const int d8[8][2] = {{1, 0}, {-1, 0},  {0, 1},  {0, -1},
                      {1, 1}, {-1, -1}, {1, -1}, {-1, 1}};
const int d4[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
inline int dcmp(double x) { return (x > EPS) - (x < -EPS); }
inline double cross(const complex<double> &a, const complex<double> &b) {
  return (conj(a) * b).imag();
}
inline double dot(const complex<double> &a, const complex<double> &b) {
  return (conj(a) * b).real();
}
const int N = 10;
bool g[N][N];
long long D[1 << N][1 << N];
int bit[1 << N];
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  while (m--) {
    int x, y;
    cin >> x >> y;
    --x;
    --y;
    g[x][y] = g[y][x] = true;
  }
  for (int i = 0; i < n; ++i) D[1 << i][1 << i] = 1;
  for (int i = 0; i < (1 << n); ++i) bit[i] = countbit(i);
  for (int i = 0; i < n; ++i)
    for (int j = i + 1; j < n; ++j) {
      if (!g[i][j]) continue;
      int S = (1 << i) | (1 << j);
      D[S][S] = 1;
    }
  for (int S = 1; S < (1 << n); ++S) {
    if (bit[S] < 3) continue;
    for (int i = 0; i < n; ++i)
      if (S & (1 << i)) {
        int V = 1 << i;
        int U = S - V;
        vector<int> A;
        for (int j = 0; j < n; ++j)
          if (U & (1 << j)) A.push_back(j);
        for (int X = U; X; X = (X - 1) & U) {
          if (D[U][X] == 0) continue;
          for (int j = 0; j < ((int)(A).size()); ++j)
            if (g[A[j]][i]) D[S][(X & (~(1 << A[j]))) ^ (1 << i)] += D[U][X];
        }
      }
    for (int i = S; i; i = (i - 1) & S)
      if (D[S][i]) {
        assert(D[S][i] % bit[i] == 0);
        D[S][i] /= bit[i];
      }
  }
  long long ret = 0;
  for (int i = 0; i < (1 << n); ++i)
    if (bit[i] == k) ret += D[(1 << n) - 1][i];
  cout << ret << endl;
  return 0;
}
