#include <bits/stdc++.h>
using namespace std;
const int MX = 200005;
int n, m, q, mn[MX], u[MX], v[MX];
int p[MX], f[MX], rk[MX];
struct Data {
  int u, inc, isp;
};
Data d[MX];
stack<int> save;
int cp;
void init() {
  while (save.size()) save.pop();
  for (int i = 1; i <= n; i++) {
    p[i] = i;
    f[i] = 0;
    rk[i] = 0;
  }
}
inline pair<int, int> parent(int a) {
  int c = 0;
  while (a != p[a]) {
    c ^= f[a];
    a = p[a];
  }
  return {a, c};
}
inline bool join(int a, int b, int g, int i) {
  pair<int, int> pa = parent(a), push_back = parent(b);
  if (pa.first == push_back.first) {
    if (pa.second == push_back.second) return 0;
    d[i] = {push_back.first, 0, g};
    save.push(i);
    cp += g;
    return 1;
  }
  if (rk[pa.first] < rk[push_back.first]) swap(pa, push_back);
  d[i] = {push_back.first, rk[pa.first] == rk[push_back.first], g};
  save.push(i);
  cp += g;
  p[push_back.first] = pa.first;
  f[push_back.first] = 1 ^ pa.second ^ push_back.second;
  rk[pa.first] += rk[pa.first] == rk[push_back.first];
  return 1;
}
void pop(int i) {
  cp -= d[i].isp;
  rk[p[d[i].u]] -= d[i].inc;
  p[d[i].u] = d[i].u;
  f[d[i].u] = 0;
}
void pop() {
  vector<int> a, b;
  if (!cp) {
    while (save.size()) {
      int i = save.top();
      save.pop();
      pop(i);
      a.push_back(i);
    }
  } else if (!d[save.top()].isp) {
    do {
      int i = save.top();
      save.pop();
      pop(i);
      if (d[i].isp)
        a.push_back(i);
      else
        b.push_back(i);
    } while (cp && a.size() != b.size());
    reverse(a.begin(), a.end());
    reverse(b.begin(), b.end());
  }
  for (int i : b) join(u[i], v[i], 0, i);
  for (int i : a) join(u[i], v[i], 1, i);
  int i = save.top();
  pop(i);
  save.pop();
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> m >> q;
  init();
  int f = 1;
  for (int i = 1; i <= m; i++) {
    cin >> u[i] >> v[i];
    f &= join(u[i], v[i], 0, i);
  }
  if (f) {
    while (q--) {
      int l, r;
      cin >> l >> r;
      cout << "NO" << '\n';
    }
    return 0;
  }
  init();
  for (int i = 1, j = 1; i <= m; i++) {
    while (join(u[j], v[j], 0, j)) {
      j++;
      if (j > m) j = 1;
    }
    mn[i] = j;
    pop();
    if (i == m) {
      while (join(u[j], v[j], 0, j)) {
        j++;
        if (j > m) j = 1;
      }
      mn[m + 1] = j;
    }
  }
  while (q--) {
    int l, r;
    cin >> l >> r;
    if (mn[r + 1] >= r + 1)
      cout << "YES" << '\n';
    else if (l > mn[r + 1])
      cout << "YES" << '\n';
    else
      cout << "NO" << '\n';
  }
  return 0;
}
