#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
using namespace std;
template <class t>
inline t read(t &x) {
  char c = getchar();
  bool f = 0;
  x = 0;
  while (!isdigit(c)) f |= c == '-', c = getchar();
  while (isdigit(c)) x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
  if (f) x = -x;
  return x;
}
template <class t, class... A>
inline void read(t &x, A &...a) {
  read(x);
  read(a...);
}
template <class t>
inline void write(t x) {
  if (x < 0)
    putchar('-'), write(-x);
  else {
    if (x > 9) write(x / 10);
    putchar('0' + x % 10);
  }
}
const long long N = 14, M = 105, S = 1 << N;
long long f[N][S], g[N][N], lx[M], ly[M], lo[M], ex[M], ey[M], n, m, q;
long long dp(long long x, long long s) {
  if (~f[x][s]) return f[x][s];
  long long &num = f[x][s];
  num = 0;
  s ^= 1 << x;
  long long p;
  for (long long i = 0; i < n; i++)
    if (s >> i & 1) {
      p = i;
      break;
    }
  for (long long t = s; t; t = (t - 1) & s)
    if (t >> p & 1) {
      long long can = 1, cnt = 0, y;
      for (long long i = 1; i <= q && can; i++)
        if (t >> lx[i] & 1 && t >> ly[i] & 1 && lo[i] == x) can = 0;
      for (long long i = 1; i <= q && can; i++)
        if (t >> lo[i] & 1 && (~t >> lx[i] & 1 || ~t >> ly[i] & 1)) can = 0;
      for (long long i = 1; i <= m && can; i++)
        if (ex[i] != x && ey[i] != x && t >> ex[i] & 1 ^ t >> ey[i] & 1)
          can = 0;
      if (!can) continue;
      for (long long i = 0; i < n; i++)
        if (g[x][i] && t >> i & 1) cnt++, y = i;
      if (cnt > 1) continue;
      if (cnt == 1)
        num += dp(y, t) * dp(x, s ^ t | 1 << x);
      else
        for (long long y = 0; y < n; y++)
          if (t >> y & 1) num += dp(y, t) * dp(x, s ^ t | 1 << x);
    }
  return num;
}
signed main() {
  memset(f, -1, sizeof f);
  read(n, m, q);
  for (long long i = 1; i <= m; i++)
    read(ex[i], ey[i]), g[--ex[i]][--ey[i]] = g[ey[i]][ex[i]] = 1;
  for (long long i = 1; i <= q; i++)
    read(lx[i], ly[i], lo[i]), lx[i]--, ly[i]--, lo[i]--;
  for (long long i = 0; i < n; i++) f[i][1 << i] = 1;
  write(dp(0, (1 << n) - 1));
}
