#include <bits/stdc++.h>
using namespace std;
using namespace rel_ops;
const double PI = acos((double)-1);
int ts, ts2, ts3, ts4;
int n, m, K;
int makepair[15][15], f[1024][1024], ans;
long long gcd(long long x, long long y) {
  long long t;
  for (; y != 0;) {
    t = x % y;
    x = y;
    y = t;
  }
  return x;
}
double sqr(double x) { return x * x; }
int q2[100];
int main() {
  int i, j, k, l, t1, t2, t3, t4, t5, t6, t7, t8, t9, t, nw;
  int tt1, tt2, tt3, tt4;
  double u1, u2, u3, u4, u5, u6, u7, u8, u9;
  char c1, c2, c3;
  srand((unsigned)time(0));
  for (q2[0] = 1, i = 1; i <= 20; i++) q2[i] = q2[i - 1] * 2;
  cin >> n >> m >> K;
  for (i = 1; i <= m; i++) {
    cin >> t1 >> t2;
    t1--;
    t2--;
    f[q2[t1] | q2[t2]][q2[t1] | q2[t2]] = 1;
    makepair[t1][t2] = makepair[t2][t1] = 1;
  }
  for (i = 0; i < q2[n]; i++) {
    for (j = i; j; j = (j - 1) & i) {
      if (!f[i][j]) continue;
      for (k = 0; k < n; k++)
        if (i & q2[k]) {
          for (l = 0; l < n; l++)
            if (makepair[k][l] && !(i & q2[l])) {
              t1 = (j & ~(q2[k])) | (q2[l]);
              if (t1 & (q2[l] - 1)) continue;
              if ((i | q2[l]) == 15 && t1 == 7) ts = 0;
              f[i | q2[l]][t1] += f[i][j];
            }
        }
    }
  }
  for (i = 0; i < q2[n]; i++) {
    t1 = __builtin_popcount(i);
    if (t1 == K) ans += f[q2[n] - 1][i];
  }
  cout << ans << endl;
  return 0;
}
