#include <bits/stdc++.h>
using namespace std;
int read();
int n, m, q;
int pre[200005], low[200005], st[200005], dfn, top;
int bel[200005], bcc[200005], idcnt;
struct Graph {
  int hd[200005], nx[400005], to[400005], cnt;
  void add(int f, int t) {
    nx[++cnt] = hd[f], hd[f] = cnt, to[cnt] = t;
    nx[++cnt] = hd[t], hd[t] = cnt, to[cnt] = f;
  }
  int up[200005];
  void dfs(int u, int fa, int b) {
    pre[u] = low[u] = ++dfn, st[++top] = u, bel[u] = b;
    for (int i = hd[u], v; i; i = nx[i]) {
      if ((i ^ fa) == 1) continue;
      up[v = to[i]] = u;
      low[u] = min(low[u], !pre[v] ? (dfs(v, i, b), low[v]) : pre[v]);
    }
    if (low[u] == pre[u]) {
      ++idcnt;
      while (1) {
        bcc[st[top]] = idcnt;
        if (st[top--] == u) break;
      }
    }
  }
} G;
int up[200005], fa[200005], dep[200005], flg[200005];
int getdep(int u) {
  return u ? (dep[u] ? dep[u] : dep[u] = getdep(up[u]) + 1) : 0;
}
void nosol() { puts("No"), exit(0); }
int find(int u) { return fa[u] == u ? u : fa[u] = find(fa[u]); }
void solve() {
  int s = read(), t = read(), u, type = 1;
  if (bel[s] != bel[t]) nosol();
  s = bcc[s], t = bcc[t];
  while (fa[s] != fa[t]) {
    if (dep[s] < dep[t]) swap(s, t), type = 3 - type;
    if (flg[s] == 3 - type) nosol();
    if (flg[u = up[s]] == type) fa[s] = find(u);
    flg[s] = type, s = find(u);
  }
  if (dep[s] < dep[t]) swap(s, t), type = 3 - type;
  if (flg[s] == 3 - type) nosol();
}
int main() {
  n = read(), m = read(), q = read(), G.cnt = 1;
  for (int i = 1; i <= m; ++i) G.add(read(), read());
  for (int i = 1; i <= n; ++i)
    if (!bel[i]) G.dfs(i, 0, i);
  for (int i = 1; i <= n; ++i)
    if (G.up[i] && (bcc[i] ^ bcc[G.up[i]])) up[bcc[i]] = bcc[G.up[i]];
  for (int i = 1; i <= idcnt; ++i) getdep(i), fa[i] = i;
  while (q--) solve();
  puts("Yes");
  return 0;
}
const int _SIZE = 1 << 22;
char ibuf[_SIZE], *iS = ibuf, *iT = ibuf;
int read() {
  int x = 0, f = 1;
  char c = (iS == iT ? iT = ((iS = ibuf) + fread(ibuf, 1, _SIZE, stdin)),
            (iS == iT ? EOF : *iS++) : *iS++);
  while (!isdigit(c))
    f = (c == '-') ? -1 : f,
    c = (iS == iT ? iT = ((iS = ibuf) + fread(ibuf, 1, _SIZE, stdin)),
         (iS == iT ? EOF : *iS++) : *iS++);
  while (isdigit(c))
    x = x * 10 + c - '0',
    c = (iS == iT ? iT = ((iS = ibuf) + fread(ibuf, 1, _SIZE, stdin)),
         (iS == iT ? EOF : *iS++) : *iS++);
  return x * f;
}
