#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 14;
struct Dsu {
  int par[maxn];
  bool cl[maxn];
  Dsu() { memset(par, -1, sizeof par); }
  stack<pair<int, int> > his;
  pair<int, int> info(int v) {
    if (par[v] < 0) return {v, 0};
    pair<int, int> tmp = info(par[v]);
    return {tmp.first, tmp.second ^ cl[v]};
  }
  void rollback(int h) {
    while (his.size() > h) {
      int u = his.top().first, v = par[u];
      par[v] -= his.top().second;
      par[u] = his.top().second;
      his.pop();
    }
  }
  bool mrg(int v, int u) {
    int cv = v, cu = u;
    auto pv = info(v), pu = info(u);
    if (pv.first == pu.first) return pv.second != pu.second;
    v = pv.first, u = pu.first;
    if (par[u] < par[v]) swap(v, u);
    his.push({u, par[u]});
    par[v] += par[u];
    par[u] = v;
    cl[u] = cl[u] ^ (info(cv).second == info(cu).second);
    return true;
  }
} dsu;
int n, m, q, ans[maxn], ea[maxn], eb[maxn];
void go(int lx = 0, int ly = 0, int rx = m, int ry = m) {
  if (lx >= rx || ly >= ry) return;
  int ft = dsu.his.size();
  if (1 || rx - lx <= ry - ly) {
    int mid = (lx + rx) / 2;
    bool good = true;
    for (int i = lx; i < mid; i++) good &= dsu.mrg(ea[i], eb[i]);
    int st = dsu.his.size();
    ans[mid] = ly;
    while (good && ans[mid] < ry - 1 &&
           dsu.mrg(ea[m - ans[mid] - 1], eb[m - ans[mid] - 1]))
      ans[mid]++;
    dsu.rollback(st);
    if (mid + 1 != rx) go(mid, ly, rx, ans[mid] + 1);
    dsu.rollback(ft);
    for (int i = ly; i < ans[mid]; i++) dsu.mrg(ea[m - i - 1], eb[m - i - 1]);
    go(lx, ans[mid], mid, ry);
  } else {
    int mid = (ly + ry) / 2;
    bool good = true;
    for (int i = lx; i <= mid; i++) good &= dsu.mrg(ea[i], eb[i]);
    int st = dsu.his.size();
    ans[mid] = ly;
    while (good && ans[mid] < rx - 1 &&
           dsu.mrg(ea[m - ans[mid] - 1], eb[m - ans[mid] - 1]))
      ans[mid]++;
    dsu.rollback(st);
    go(mid + 1, ly, rx, ans[mid] + 1);
    dsu.rollback(ft);
    for (int i = lx; i < ans[mid]; i++) dsu.mrg(ea[m - i], eb[m - i]);
    go(lx, ans[mid], mid, ry);
  }
  dsu.rollback(ft);
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n >> m >> q;
  for (int i = 1; i <= m; i++) {
    cin >> ea[i] >> eb[i];
    ea[i]--, eb[i]--;
  }
  m += 2;
  ea[0] = ea[m - 1] = n;
  eb[0] = eb[m - 1] = n + 1;
  go();
  while (q--) {
    int l, r;
    cin >> l >> r;
    cout << (ans[l] < m - r - 1 ? "YES" : "NO") << '\n';
  }
}
