#include <bits/stdc++.h>
using namespace std;
long long int inf = 1000000ll * +200;
long long int mod = 998244353;
const int maxn = 13;
int n, m, q;
struct lca {
  int a;
  int b;
  int c;
} Q[105];
struct edge {
  int u;
  int v;
} E[20];
long long int dp[maxn][10000];
inline int lo(int x) { return (x & (-x)); }
inline bool isin(int mask, int elm) { return (((1 << elm) & mask) > 0); }
inline bool check(int mask1, int mask2, int rt1, int rt2) {
  for (int i = 0; i < m; i++) {
    if (((isin(mask1, E[i].u) && isin(mask2, E[i].v)) &&
         (E[i].u != rt1 || E[i].v != rt2)) ||
        ((isin(mask1, E[i].v) && isin(mask2, E[i].u)) &&
         (E[i].v != rt1 || E[i].u != rt2))) {
      return 0;
    }
  }
  for (int i = 0; i < q; i++) {
    if (((isin(mask1, Q[i].a) && isin(mask2, Q[i].b)) && Q[i].c != rt1) ||
        ((isin(mask1, Q[i].b) && isin(mask2, Q[i].a)) && Q[i].c != rt1)) {
      return 0;
    }
  }
  return 1;
}
long long int calcdp(int rt, int mask) {
  if (dp[rt][mask] != -1) return dp[rt][mask];
  if (lo(mask) == mask) return dp[rt][mask] = 1;
  mask -= (1 << rt);
  long long int res = 0;
  for (int submask = mask;; submask = (submask - 1) & mask) {
    if (submask == 0) break;
    if (lo(submask) != lo(mask)) continue;
    for (int nrt = 0; nrt < n; nrt++) {
      if (!isin(submask, nrt)) continue;
      if (check(mask - submask + (1 << rt), submask, rt, nrt)) {
        res += calcdp(nrt, submask) * calcdp(rt, mask - submask + (1 << rt));
      }
    }
  }
  return dp[rt][mask + (1 << rt)] = res;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> q;
  for (int i = 0; i < m; i++) {
    cin >> E[i].u >> E[i].v;
    E[i].u--;
    E[i].v--;
  }
  for (int i = 0; i < q; i++) {
    cin >> Q[i].a >> Q[i].b >> Q[i].c;
    Q[i].a--;
    Q[i].b--;
    Q[i].c--;
  }
  for (int i = 0; i < q; i++) {
    if (Q[i].a == Q[i].b && Q[i].b != Q[i].c) {
      cout << 0;
      return 0;
    }
  }
  for (int i = 0; i < maxn; i++) {
    fill(dp[i], dp[i] + 10000, -1);
  }
  cout << calcdp(0, (1 << n) - 1);
  return 0;
}
