#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 10;
vector<int> v[maxn];
vector<int> edge[maxn];
int flag[maxn], val[2][maxn];
bool bad[maxn];
int par[maxn][20];
inline int dfs(int x, int p) {
  par[x][0] = p;
  for (int i = 1; i < 20; i++) par[x][i] = par[par[x][i - 1]][i - 1];
  flag[x] = flag[p] + 1;
  int ret = flag[x];
  int cnt = 0;
  for (int i = 0; i < v[x].size(); i++) {
    int u = v[x][i];
    if (flag[u] == 0)
      ret = min(ret, dfs(u, x));
    else {
      if (flag[u] == flag[x] - 1)
        cnt++;
      else
        ret = min(ret, flag[u]);
    }
  }
  if (cnt > 1) ret = min(ret, flag[x] - 1);
  bad[x] = ret == flag[x];
  return ret;
}
inline int Par(int x, int k) {
  for (int i = 20; i >= 0; i--)
    if (k & (1 << i)) {
      x = par[x][i];
      k -= (1 << i);
    }
  return x;
}
inline int cpar(int x, int y) {
  if (flag[x] < flag[y]) swap(x, y);
  x = Par(x, flag[x] - flag[y]);
  if (x == y) return x;
  for (int i = 19; i >= 0; i--)
    if (par[x][i] != par[y][i]) {
      x = par[x][i];
      y = par[y][i];
    }
  return par[x][0];
}
inline pair<int, int> dfs2(int x) {
  pair<int, int> ret(0, 0);
  ret.first += val[0][x];
  ret.second += val[1][x];
  flag[x] = true;
  for (int i = 0; i < v[x].size(); i++)
    if (flag[v[x][i]] == 0) {
      pair<int, int> g = dfs2(v[x][i]);
      ret.first += g.first;
      ret.second += g.second;
    }
  if (bad[x] && ret.first && ret.second) {
    cout << "No";
    exit(0);
  }
  return ret;
}
int main() {
  int n, m, q;
  cin >> n >> m >> q;
  for (int i = 1; i <= m; i++) {
    int x, y;
    cin >> x >> y;
    v[x].push_back(y);
    v[y].push_back(x);
  }
  for (int i = 1; i <= n; i++)
    if (flag[i] == 0) dfs(i, 0);
  while (q--) {
    int x, y;
    cin >> x >> y;
    int u = cpar(x, y);
    val[0][x]++;
    val[0][u]--;
    val[1][u]--;
    val[1][y]++;
  }
  memset(flag, 0, sizeof flag);
  for (int i = 1; i <= n; i++)
    if (flag[i] == 0) {
      pair<int, int> G = dfs2(i);
      if (G.first || G.second) {
        cout << "No";
        return 0;
      }
    }
  cout << "Yes";
  return 0;
}
