#include <bits/stdc++.h>
using namespace std;
const int maxn = 200050, maxm = 200050, maxb = 18;
int n, m, q, anss = 1;
char ans[2][5] = {"No", "Yes"};
int es = 1, he[maxn], ne[maxm * 2], to[maxm * 2];
bool whe[maxm * 2];
int tim = 0, dfn[maxn], low[maxn], bel[maxn], bs = 0;
pair<int, int> st[maxm];
int top = 0;
int es2 = 1, he2[maxn], ne2[maxm * 2], to2[maxm * 2];
int fa[maxn][maxb], dep[maxn];
int len[maxn][2];
void ins(int x, int y) { ne[++es] = he[x], he[x] = es, to[es] = y; }
void dfs(int x, int fr) {
  int i, y;
  low[x] = dfn[x] = ++tim;
  for (i = he[x]; i; i = ne[i])
    if (i != fr) {
      if (!dfn[y = to[i]])
        dfs(y, i ^ 1), low[x] = min(low[x], low[y]);
      else
        low[x] = min(low[x], dfn[y]);
    }
  if (low[x] >= dfn[x]) whe[fr] = whe[fr ^ 1] = 1;
}
void get_b(int b, int x) {
  int i, y;
  bel[x] = b;
  for (i = he[x]; i; i = ne[i])
    if (!whe[i] && !bel[y = to[i]]) get_b(b, y);
}
void ins2(int x, int y) { ne2[++es2] = he2[x], he2[x] = es2, to2[es2] = y; }
void dfs2(int x) {
  int i, y;
  for (i = 0; fa[x][i]; i++) fa[x][i + 1] = fa[fa[x][i]][i];
  for (i = he2[x]; i; i = ne2[i])
    if ((y = to2[i]) != fa[x][0]) fa[y][0] = x, dep[y] = dep[x] + 1, dfs2(y);
}
inline int LCA(int x, int y) {
  if (dep[x] < dep[y]) swap(x, y);
  int i;
  for (i = maxb - 1; i >= 0; i--)
    if (dep[x] - dep[y] >= 1 << i) x = fa[x][i];
  if (x == y) return x;
  for (i = maxb - 1; i >= 0; i--)
    if (fa[x][i] != fa[y][i]) x = fa[x][i], y = fa[y][i];
  return fa[x][0];
}
bool check(int x) {
  int i, y;
  bool z = 1;
  for (i = he2[x]; i; i = ne2[i])
    if ((y = to2[i]) != fa[x][0]) {
      z &= check(y);
      len[x][0] = max(len[x][0], len[y][0] - 1);
      len[x][1] = max(len[x][1], len[y][1] - 1);
    }
  return z & (!len[x][0] || !len[x][1]);
}
int main() {
  int i, j, x, y;
  scanf("%d%d%d", &n, &m, &q);
  for (i = 0; i < m; i++) scanf("%d%d", &x, &y), ins(x, y), ins(y, x);
  for (i = 1; i <= n; i++)
    if (!dfn[i]) dfs(i, 0);
  for (i = 1; i <= n; i++)
    if (!bel[i]) get_b(++bs, i);
  for (i = 1; i <= n; i++)
    for (j = he[i]; j; j = ne[j])
      if (bel[i] != bel[to[j]]) ins2(bel[i], bel[to[j]]);
  for (i = 1; i <= n; i++)
    if (!fa[i][0]) dfs2(i);
  while (q--) {
    int lca;
    scanf("%d%d", &x, &y);
    x = bel[x], y = bel[y];
    lca = LCA(x, y);
    if (!lca) anss = 0;
    len[x][0] = max(len[x][0], dep[x] - dep[lca]);
    len[y][1] = max(len[y][1], dep[y] - dep[lca]);
  }
  if (anss) anss = check(1);
  printf("%s\n", ans[anss]);
  return 0;
}
