#include"bits/stdc++.h"
using namespace std;
const int nMax = 2e5 + 7;
//tmp1[2] -> 1 yeni
// -> 0 eski
long long cnt = 0;
bool ans[nMax];
long long smL[nMax];
long long rnk[nMax];
long long eq[nMax];
long long par[nMax];
vector <array <long long , 2> > edges;
array <long long , 4 > tmp1;
stack <array <long long , 4 > > st;
pair <long long , long long> findPar(long long a, long long tmp){
if(par[a] == a){
tmp = (tmp ^ eq[a]);
return make_pair(a , tmp);
}
return findPar(par[a] , tmp ^ eq[a]);
}
void rb(){
long long piv = st.top()[0];
if(piv == -1){
cnt = st.top()[1];
st.pop();
return;
}
eq[piv] = 0;
rnk[par[piv]] -= rnk[piv];
par[piv] = piv;
st.pop();
}
bool uni(long long a , long long b , long long k){
pair <long long , long long> fr = findPar(a , 0);
pair <long long , long long> sec = findPar(b , 0);
//cout << a << " " << b << " "<< fr.first << " " << sec.first << "\n";
tmp1[3] = k;
if(fr.first == sec.first){
tmp1[0] = -1;
tmp1[1] = cnt;
tmp1[2] = 1;
st.push(tmp1);
if(fr.second == sec.second){
cnt++;
return false;
}
return true;
}
a = fr.first;
b = sec.first;
if(rnk[a] > rnk[b]){
swap(a , b);
}
tmp1[0] = a;
tmp1[1] = -1;
tmp1[2] = 1;
st.push(tmp1);
rnk[b] += rnk[a];
eq[a] = 0;
if(fr.second == sec.second){
eq[a] = 1;
}
par[a] = b;
return true;
}
void fix(){
int eS = 0;
int yS = 0;
vector <array <long long , 4 > > e;
vector <array <long long , 4 > > y;
if(st.top()[2] == 1){
yS++;
y.push_back(st.top());
rb();
}
else{
eS++;
e.push_back(st.top());
rb();
}
while(st.size() && eS != yS){
if(st.top()[2] == 1){
yS++;
y.push_back(st.top());
rb();
}
else{
eS++;
e.push_back(st.top());
rb();
}
}
if(eS == 0 && !st.size()){
for(long long i = 0; y.size() > i; i++){
y[i][2] = 0;
uni(edges[y[i][3]][0] ,edges[y[i][3]][1] , y[i][3]);
st.top()[2] = 0;
}
}
else{
for(long long i = y.size() - 1; 0 <= i; i--){
uni(edges[y[i][3]][0] ,edges[y[i][3]][1] , y[i][3]);
}
for(long long i = e.size() - 1; 0 <= i; i--){
uni(edges[e[i][3]][0] ,edges[e[i][3]][1] , e[i][3]);
st.top()[2] = 0;
}
}
}
void rollback(){
if(st.top()[2] == 0){
rb();
return;
}
fix();
rb();
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
long long n , m , q , l , r;
array <long long , 2> tmp;
cin >> n >> m >> q;
for(long long i = 1; n >= i; i++){
rnk[i] = 1;
par[i] = i;
}
tmp[0] = 0;
tmp[1] = 0;
edges.push_back(tmp);
for(long long i = 0; m > i; i++){
cin >> l >> r;
tmp[0] = l;
tmp[1] = r;
edges.push_back(tmp);
uni(l , r , i + 1);
}
r = 0;
for(long long i = 1; m >= i; i++){
while(m >= r && cnt != 0){
r++;
rollback();
}
//cout << i << " " << r << "\n";
smL[i] = r;
uni(edges[i][0] , edges[i][1] , i);
}
for(long long i = 0; q > i; i++){
cin >>l >> r;
if(smL[l] > r){
cout << "YES\n";
}
else{
cout << "NO\n";
}
}
}