#include <bits/stdc++.h>
using namespace std;
long long ans[1 << 13][13][13][14];
int main() {
  cin.sync_with_stdio(0);
  cin.tie(0);
  cout << fixed << setprecision(10);
  int N, M, Q;
  cin >> N >> M >> Q;
  if (N == 1) {
    cout << "1\n";
    return 0;
  }
  vector<vector<int> > E(N, vector<int>(N, 0));
  for (int i = 0; i < M; i++) {
    int a, b;
    cin >> a >> b;
    E[--a][--b] = 1;
    E[b][a] = 1;
  }
  vector<vector<pair<int, int> > > lcap(N);
  vector<vector<int> > child(N);
  for (int i = 0; i < Q; i++) {
    int a, b, c;
    cin >> a >> b >> c;
    c--, b--, a--;
    if (a == b && a != c) {
      cout << "0\n";
      return 0;
    }
    if (a == b) continue;
    if (a != c && b != c) lcap[c].push_back(make_pair(a, b));
    if (a != c) child[c].push_back(a);
    if (b != c) child[c].push_back(b);
  }
  vector<bool> ban(1 << N, false);
  for (int i = 0; i < (1 << N); i++) {
    for (int j = 0; j < N; j++)
      if ((((i >> j) & 1) == 0))
        for (auto it = lcap[j].begin(); it != lcap[j].end(); it++)
          if (((i >> it->second) & 1) && ((i >> it->first) & 1)) ban[i] = true;
    for (int j = 0; j < N; j++)
      if (((i >> j) & 1))
        for (auto it = child[j].begin(); it != child[j].end(); it++)
          if ((((i >> *it) & 1) == 0)) ban[i] = true;
  }
  vector<int> v(1 << N), sub;
  for (int i = 1; i < (1 << N); i++)
    for (int r = 0; r < N; r++)
      if (((i >> r) & 1))
        for (int pr = 0; pr < N; pr++)
          if ((((i >> pr) & 1) == 0) || (r == 0 && pr == 0)) {
            if ((1 << r) == i) ans[i][r][pr][0] = 1;
            for (int k = 0; k < N; k++) {
              if (!((i >> k) & 1) || k == r) {
                ans[i][r][pr][k + 1] = ans[i][r][pr][k];
                continue;
              }
              ans[i][r][pr][k + 1] = ans[i][r][pr][k];
              sub.clear();
              for (int j = 0; j < N; j++)
                if (((i >> j) & 1) && j != r && j != k) sub.push_back(j);
              int s = sub.size(), b = 0;
              v[0] = 1 << k;
              for (int j = 0; j < (1 << s); j++) {
                while ((1 << b) <= j) b++;
                for (int l = b; l < s; l++)
                  v[j + (1 << l)] = v[j] + (1 << sub[l]);
                ans[i][r][pr][k + 1] +=
                    ans[v[j]][k][r][N] * ans[i - v[j]][r][pr][k];
              }
            }
            bool ok = true;
            for (int j = 0; j < N; j++)
              if (E[r][j] && (pr != j && (((i >> j) & 1) == 0))) ok = false;
            if (!ok || ban[i]) ans[i][r][pr][N] = 0;
          }
  cout << ans[(1 << N) - 1][0][0][N] << "\n";
  return 0;
}
