https://www.luogu.com.cn/record/97518930
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 20, mod = 19260817;
int n, m, res, c, u, v, cnt[N][N], sum[1 << N], f[N][1 << N][2];
inline void upd(int& x, int y) { (x += y) >= mod ? x -= mod : 0; }
signed main() {
cin >> n >> m;
for (int i = 1; i <= n; i ++)
cin >> u >> v, cnt[u][v] ++, cnt[v][u] ++;
cin >> c;
for (int i = 0; i < 1 << n; i ++)
for (int j = 0; j < n; j ++)
if (i & 1 << j) sum[i] += j + 1;
f[1][1][0] = 1;
for (int i = 1; i < 1 << n; i ++)
for (int u = 1; u <= n; u ++)
for (int v = 1; v <= n; v ++) {
if (!cnt[u][v]) continue;
if (i & 1 << (v - 1)) continue;
int S = i | 1 << (v - 1);
upd(f[v][S][(v * sum[i]) & 1], f[u][i][0] * cnt[u][v]);
upd(f[v][S][(v * sum[i] + 1) & 1], f[u][i][1] * cnt[u][v]);
// cout << u << ' ' << v << ' ' << i << ' ' << S << ' ' << f[v][S][(v * sum[i]) & 1] << '\n';
}
for (int i = 0; i < 1 << n; i ++)
upd(res, f[n][i][c]);
cout << res << '\n';
return 0;
}