#include<bits/stdc++.h>
using namespace std;
#define rep(i,x,y) for(int i=(x);i<=(y);++i)
template<class T> bool maximize(T &a, const T &b){ return (a < b) ? a = b, 1 : 0; }
template<class T> bool minimize(T &a, const T &b){ return (a > b) ? a = b, 1 : 0; }
typedef long long ll;
#define all(x) x.begin(),x.end()
#define ii pair<int,int>
#define fi first
#define se second
#define pb push_back
/// end of template ///
const int N = 2e5 + 5;
const int M = 2e5 + 5;
const int Q = 2e5 + 5;
int n,m,q,U[M],V[M],f[M];
struct Dsu
{
int n,par[N],sz[N];
bool ok,xr[N];
stack<int> history;
Dsu() {}
void init(int _n)
{
n=_n;
for(int i=1;i<=n;++i) par[i]=i,xr[i]=0,sz[i]=1;
ok=1;
}
ii get(int x)
{
if(x==par[x]) return {x,0};
ii cm=get(par[x]);
return {cm.fi,cm.se^xr[x]};
}
bool unite(int u, int v)
{
// cout<<u<<' '<<v<<'\n';
ii s=get(u),t=get(v);
// cout<<s.se<<' '<<t.se<<'\n';
if(s.fi==t.fi)
{
history.push(~ok);
if(s.se==t.se) ok=0;
return 0;
}
if(sz[t.fi]>sz[s.fi]) swap(s,t);
xr[t.fi]=(s.se^1^t.se);
par[t.fi]=s.fi;
sz[s.fi]+=sz[t.fi];
history.push(t.fi);
return 1;
}
void rollback(int rb)
{
while((int)history.size()>rb)
{
int x=history.top();
history.pop();
if(x<0) ok=(~x);
else sz[par[x]]-=sz[x],par[x]=x,xr[x]=0;
}
}
void addEdge(int e)
{
// cout<<e<<'\n';
if(e==0 || e==m+1) return;
unite(U[e],V[e]);
}
int snap()
{
return (int)history.size();
}
} dsu;
void dnc(int l, int r, int lo, int hi)
{
if(l>r) return;
// cout<<l<<' '<<r<<' '<<lo<<' '<<hi<<'\n';
// cout<<dsu.ok<<'\n';
int mid((l+r)>>1);
int c0=dsu.snap();
rep(i,mid+1,r) dsu.addEdge(i);
int c1=dsu.snap();
f[mid]=lo-1;
do
{
++f[mid];
if(f[mid]==mid+1) break;
dsu.addEdge(f[mid]);
} while(dsu.ok);
assert(f[mid]<=hi);
// cout<<mid<<' '<<f[mid]<<'\n';
// exit(0);
dsu.rollback(c1);
dsu.addEdge(mid);
dnc(l,mid-1,lo,f[mid]);
dsu.rollback(c0);
rep(i,lo,f[mid]-1) dsu.addEdge(i);
dnc(mid+1,r,f[mid],hi);
dsu.rollback(c0);
}
void solve()
{
cin>>n>>m>>q;
rep(i,1,m) cin>>U[i]>>V[i];
dsu.init(n);
// dsu.addEdge(2);
// dsu.addEdge(3);
// cout<<dsu.ok;
// return;
dnc(1,m,0,m+1);
while(q--)
{
int l,r;
cin>>l>>r;
cout<<(l>f[r]?"YES\n":"NO\n");
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
#define TASK "OLP304"
// freopen(TASK".inp","r",stdin);
// freopen(TASK".out","w",stdout);
int testcase=1;
// cin>>testcase;
while (testcase--)
solve();
return 0;
}