#include <bits/stdc++.h>
using namespace std;
int SOLN = 1;
struct Solver {
  int t, ed, v[400005], qd[400005], qn[400005], l[400005], h[400005], f[400005],
      up[400005], dn[400005];
  int T[400005][20];
  void add(int x, int y) { qd[++ed] = y, qn[ed] = l[x], l[x] = ed; }
  inline int hmin(int x, int y) { return h[x] < h[y] ? x : y; }
  void dfs(int x, int y) {
    h[x] = y;
    v[++t] = x;
    f[x] = t;
    for (int i = l[x]; i; i = qn[i])
      if (!f[qd[i]]) {
        dfs(qd[i], y + 1);
        v[++t] = x;
      }
  }
  void pre() {
    for (int i = 1; i <= t; i++) T[i][0] = v[i];
    for (int j = 1; (1 << j) <= t; j++)
      for (int i = 1; i + (1 << j) - 1 <= t; i++)
        T[i][j] = hmin(T[i][j - 1], T[i + (1 << (j - 1))][j - 1]);
  }
  int lca(int x, int y) {
    int t;
    x = f[x];
    y = f[y];
    if (x > y) swap(x, y);
    for (t = 0; (1 << (t + 1)) <= (y - x + 1); t++)
      ;
    return hmin(T[x][t], T[y - (1 << t) + 1][t]);
  }
  void solve(int x, int y) {
    for (int i = (l[x]); i; i = qn[i])
      if (qd[i] != y) {
        solve(qd[i], x);
        up[x] += up[qd[i]];
        dn[x] += dn[qd[i]];
      }
    if (up[x] && dn[x]) SOLN = 0;
  }
} S;
int n, m, q, x, y, ed, t, C;
int l[400005];
int qd[400005], qn[400005], w[400005], v[400005], col[400005];
void bd(int x, int y) { qd[++ed] = y, qn[ed] = l[x], l[x] = ed; }
void dfs(int x, int y) {
  v[x] = w[x] = ++t;
  for (int i = l[x]; i; i = qn[i])
    if (!v[qd[i]]) {
      dfs(qd[i], i ^ 1);
      w[x] = min(w[x], w[qd[i]]);
    } else if (i != y)
      w[x] = min(w[x], v[qd[i]]);
}
void color(int x, int y) {
  col[x] = y;
  for (int i = (l[x]); i; i = qn[i])
    if (!col[qd[i]]) {
      if (w[qd[i]] > v[x]) {
        ++C;
        S.add(y, C), S.add(C, y);
        color(qd[i], C);
      } else
        color(qd[i], col[x]);
    }
}
int main() {
  ed = 1;
  scanf("%d%d%d", &n, &m, &q);
  while (m--) {
    scanf("%d%d", &x, &y);
    bd(x, y), bd(y, x);
  }
  for (int i = (1); i <= (n); i++)
    if (!v[i]) {
      dfs(i, -1);
      ++C;
      S.add(0, C);
      S.add(C, 0);
      color(i, C);
    }
  S.dfs(0, 0);
  S.pre();
  while (q--) {
    scanf("%d%d", &x, &y);
    if (col[x] == col[y]) continue;
    x = col[x], y = col[y];
    int w = S.lca(x, y);
    if (w == 0) {
      puts("No");
      return 0;
    }
    S.up[x]++;
    S.dn[y]++;
    S.up[w]--;
    S.dn[w]--;
  }
  S.solve(0, -1);
  puts(SOLN ? "Yes" : "No");
  return 0;
}
