#include <bits/stdc++.h>
using namespace std;
int es[14], n, m, q;
vector<pair<int, int>> lca[14];
long long dp[14][14][1 << 14];
int decode(int msk) {
  int ans = 0, nbit = 1;
  while (msk) {
    ans += (msk & 1) * nbit;
    msk >>= 1;
    nbit *= 10;
  }
  return ans;
}
bool check_lca_set(vector<pair<int, int>> ps, int rt, int s1, int s2) {
  for (auto p : ps) {
    int a = p.first;
    int b = p.second;
    if (a == b) {
      if (b == rt)
        continue;
      else
        return false;
    } else {
      int a_b = (1 << (a - 1)) | (1 << (b - 1));
      if ((a != rt && b != rt) && (a_b | s1) == s1) return false;
    }
  }
  return true;
}
bool check_lca_subset(vector<pair<int, int>> ps, int msk) {
  for (auto p : ps) {
    int a = p.first;
    int b = p.second;
    int a_b = (1 << (a - 1)) | (1 << (b - 1));
    if ((a_b | msk) == msk)
      continue;
    else
      return false;
  }
  return true;
}
long long dfs(int rt, int l, int msk) {
  if (dp[rt][l][msk] != -1) return dp[rt][l][msk];
  if (msk == (1 << (rt - 1))) return dp[rt][l][msk] = 1;
  long long ans = 0;
  int submsk = msk - (1 << (rt - 1));
  for (int i = submsk; i; i = (i - 1) & submsk) {
    if (!check_lca_set(lca[rt], rt, i | 1 << (rt - 1), msk - i)) {
      continue;
    }
    for (int j = l; j <= n; j++)
      if (i & (1 << (j - 1))) {
        if (es[rt] & (i ^ (1 << (j - 1)))) continue;
        if (es[rt] & (1 << (j - 1))) {
          if (((es[j] - (1 << (rt - 1))) | i) != i) continue;
        } else {
          if ((es[j] | i) != i) continue;
        }
        if (!check_lca_subset(lca[j], i)) continue;
        long long pa = 0, pb = 0;
        pa = dfs(j, 1, i);
        if (pa) pb = dfs(rt, j + 1, msk - i);
        ans += pa * pb;
      }
  }
  return dp[rt][l][msk] = ans;
}
int main() {
  scanf("%d%d%d", &n, &m, &q);
  for (int i = 0; i < m; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    es[u] |= 1 << (v - 1);
    es[v] |= 1 << (u - 1);
  }
  for (int i = 0; i < q; i++) {
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    lca[c].push_back(make_pair(a, b));
  }
  memset(dp, -1, sizeof(dp));
  cout << dfs(1, 1, (1 << n) - 1) << endl;
  return 0;
}
