#include <bits/stdc++.h>
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
inline long long rand(long long x, long long y) {
  return rng() % (y + 1 - x) + x;
}
string inline to_string(char c) {
  string second(1, c);
  return second;
}
template <typename T>
inline T gcd(T a, T b) {
  return a == 0 ? llabs(b) : gcd(b % a, a);
}
using ll = long long;
using ld = long double;
using pi = pair<int, int>;
using spi = pair<int, pi>;
using dpi = pair<pi, pi>;
long long LLINF = 1e18;
int INF = 1e9 + 1e6;
int n, m, q, last[(200002)], cy[(200002) * 2];
pi E[(200002)];
int p[(200002) * 2], sz[(200002) * 2];
bool bp = 1;
stack<int> stk;
void init() {
  for (int i = 0; i <= int((200002) * 2 - 1); ++i) p[i] = i, sz[i] = 1;
  bp = 1;
  while (stk.size()) stk.pop();
}
int find(int x) { return p[x] == x ? x : find(p[x]); }
void merge(int x, int y) {
  x = find(x), y = find(y);
  if (x == y) return;
  if (sz[x] > sz[y]) swap(x, y);
  p[x] = y, sz[y] += sz[x], stk.emplace(x);
}
void undo() {
  int x = stk.top();
  stk.pop();
  if (x == -1) {
    bp = 1;
    return;
  }
  sz[p[x]] -= sz[x], p[x] = x;
}
void merge(int ind) {
  if (ind > m) return;
  int x = E[ind].first, y = E[ind].second;
  merge(x, y + n), merge(x + n, y);
  if (bp && find(x) == find(x + n)) bp = 0, stk.emplace(-1);
}
void dnc(int x, int y, int l, int r) {
  if (x > y) return;
  int mid = (x + y) >> 1, R = max(l, mid), start = stk.size();
  for (int i = x; i <= int(mid - 1); ++i) merge(i);
  int memo = stk.size();
  for (int i = r; i >= int(max(l, mid + 1)); --i) {
    merge(i);
    if (!bp) {
      R = i;
      break;
    }
  }
  last[mid] = R;
  while (stk.size() > memo) undo();
  merge(mid);
  dnc(mid + 1, y, max(mid + 1, R), r);
  while (stk.size() > start) undo();
  for (int i = r; i >= int(R + 1); --i) merge(i);
  dnc(x, mid - 1, l, R);
  while (stk.size() > start) undo();
}
int in() {
  int x = 0;
  char ch = getchar();
  while (ch < '0' || ch > '9') ch = getchar();
  while (ch >= '0' && ch <= '9')
    x = (x << 1) + (x << 3) + (ch & 15), ch = getchar();
  return x;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  n = in(), m = in(), q = in();
  init();
  for (int i = 1; i <= int(n); ++i) cy[i] = i + n, cy[i + n] = i;
  for (int i = 1; i <= int(m); ++i) E[i].first = in(), E[i].second = in();
  dnc(1, m, 1, m + 1);
  while (q--) {
    int l = in(), r = in();
    if (r < last[l])
      cout << "YES\n";
    else
      cout << "NO\n";
  }
}
