#include <bits/stdc++.h>
using namespace std;
struct adat {
  int os = -1, mely = 1;
  bool egyezik = false;
};
struct update {
  int ind;
  adat d;
};
const int maxn = (int)2e5;
adat csop[2 * maxn];
update upd[4 * maxn];
int veg = 0;
int n, m;
int ki[maxn + 1];
vector<pair<int, int>> v;
int Os(int a) {
  if (csop[a].os == -1) return a;
  upd[veg++] = {a, csop[a]};
  int temp = Os(csop[a].os);
  csop[a].egyezik ^= csop[csop[a].os].egyezik;
  csop[a].os = temp;
  return csop[a].os;
}
bool Union(int a, int b) {
  int lastA = a, lastB = b;
  a = Os(a);
  b = Os(b);
  if (a == b) return (csop[lastA].egyezik != csop[lastB].egyezik);
  if (csop[a].mely < csop[b].mely) swap(a, b);
  upd[veg++] = {a, csop[a]};
  upd[veg++] = {b, csop[b]};
  csop[b].os = a;
  csop[b].egyezik ^= (csop[lastA].egyezik == csop[lastB].egyezik);
  csop[a].mely = max(csop[a].mely, csop[b].mely + 1);
  return true;
}
void Vissza(int x) {
  veg--;
  while (veg >= x) {
    csop[upd[veg].ind] = upd[veg].d;
    veg--;
  }
  veg++;
  return;
}
int Index(int x, int l) {
  if (x == l) return x;
  if (x == m) x--;
  while (x > l && Union(v[x].first - 1, v[x].second - 1)) x--;
  return x;
}
void Megold(int ll, int lr, int rl, int rr) {
  if (ll > lr) return;
  int x = (ll + lr) / 2;
  int akt = veg;
  bool kesz = false;
  for (int i = ll; i <= x; i++)
    if (!Union(v[i].first - 1, v[i].second - 1)) kesz = true;
  int y;
  if (kesz)
    y = rr;
  else
    y = Index(rr, rl);
  Vissza(akt);
  ki[x + 1] = y + 1;
  akt = veg;
  for (int i = ll; i <= x; i++) Union(v[i].first - 1, v[i].second - 1);
  Megold(x + 1, lr, y, rr);
  Vissza(akt);
  akt = veg;
  for (int i = y + 1; i <= min(rr, m - 1); i++)
    Union(v[i].first - 1, v[i].second - 1);
  Megold(ll, x - 1, rl, y);
  Vissza(akt);
  return;
}
int main() {
  cin.sync_with_stdio(false);
  cin.tie(0);
  int q;
  cin >> n >> m >> q;
  v.resize(m);
  for (int i = 0; i < m; i++) cin >> v[i].first >> v[i].second;
  ki[0] = m - 1;
  while (ki[0] >= 0 && Union(v[ki[0]].first - 1, v[ki[0]].second - 1)) ki[0]--;
  ki[0]++;
  if (ki[0] == 0) {
    for (int i = 0; i < q; i++) {
      int l, r;
      cin >> l >> r;
      cout << "NO\n";
    }
    return 0;
  }
  for (int i = 0; i < 2 * maxn; i++) csop[i] = adat();
  veg = 0;
  Megold(0, m - 1, 0, m);
  for (int i = 0; i < q; i++) {
    int l, r;
    cin >> l >> r;
    if (r < ki[l - 1])
      cout << "YES\n";
    else
      cout << "NO\n";
  }
  return 0;
}
