func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, m, k;   int Graph[1025][1025], f[1025][1025];   int Tj(int x) {     int tot = 0;     while (x) tot++, x -= x & (-x);     return tot;   }   void read(int &x) {     x = 0;     char c = getchar();     int f = 1;     while (c <  0  || c >  9 ) {       if (c ==  - ) f = -f;       c = getchar();     }     while (c >=  0  && c <=  9 ) {       x = (x << 3) + (x << 1) + c -  0 ;       c = getchar();     }     x *= f;     return;   }   void write(int x) {     if (x < 0) {       x = -x;       putchar( - );     }     if (x > 9) write(x / 10);     putchar(x % 10 +  0 );   }   signed main() {     read(n), read(m), read(k);     for (register int i = 1; i <= m; ++i) {       int u, v;       read(u), read(v);       u--, v--;       Graph[u][v] = Graph[v][u] = f[(1 << u) | (1 << v)][(1 << u) | (1 << v)] = 1;     }     for (register int i = 0; i < (1 << n); ++i)       for (register int j = 0; j < (1 << n); ++j)         if ((i & j) == j && f[i][j])           for (register int k1 = 0; k1 < n; ++k1)             for (register int k2 = 0; k2 < n; ++k2) {               if (Graph[k1][k2] && (i & (1 << k1)) && (~i & (1 << k2)) &&                   !(((j & (~(1 << k1))) | (1 << k2)) >> (k2 + 1)))                 f[i | (1 << k2)][j & (~(1 << k1)) | (1 << k2)] += f[i][j];             }     int ans = 0;     for (register int i = 0; i < (1 << n); ++i)       if (Tj(i) == k) ans += f[(1 << n) - 1][i];     write(ans), putchar(  n );     return 0;   }   