#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define el '\n'
#define fi first
#define se second
#define pb push_back
#define FOR(i,l,r) for(ll i=(l),_r=(r);i<=_r;i++)
#define FORNG(i,r,l) for(ll i=(r),_l=(l);i>=_l;i--)
#define MASK(i) (1LL<<(i))
#define BIT(x,i) (((x)>>(i))&1LL)
#define all(v) (v).begin(),(v).end()
#define sz(v) ((ll)(v).size())
const ll mod = 0 ;
const ll maxn = 5e5+5 ;
const ll base = 36366 ;
ll baserem[maxn];
ll seg[4*maxn];
ll res[maxn];
pair < ll , ll > rem[maxn ] ;
ll lazy[4*maxn];
ll seglz[4*maxn] ;
mt19937_64 rd(time(0));
long long rand(long long l, long long r) {
return l + rd() % (r - l + 1);
}
void update ( ll l, ll r, ll id , ll idx , ll val )
{
if ( r < idx || idx<l) return ;
if ( l == r )
{
seg[id ] += val ;
return ;
}
ll mid = (l+r ) /2;
update ( l , mid , id *2 , idx ,val ) ;
update ( mid +1 , r, id *2 +1 , idx, val ) ;
seg[id ] =seg[id *2 ] + seg[id *2 +1 ] ;
}
ll get ( ll l, ll r, ll id , ll u , ll v )
{
if (r <u || v< l )
{
return 0 ;
}
if ( u<=l && r <= v )
{
return seg[id] ;
}
ll mid = (l+r ) /2;
return get ( l , mid , id *2 , u , v) + get ( mid +1 , r, id *2 +1 , u , v ) ;
}
void push (ll l , ll r ,ll id )
{
if ( l== r || lazy[id ]== 0 ) return ;
ll &u = lazy[id] ;
lazy[id*2] = u ;
lazy[id*2+1] = u ;
seglz[id*2] = u ;
seglz[id *2 +1 ]= u ;
u =0 ;
}
void updatelz ( ll l, ll r, ll id , ll u , ll v, ll val )
{
if ( r < u || v<l ) return ;
if ( u<=l && r <=v )
{
seglz[id ] = val ;
lazy[id ] = val ;
return ;
}
push ( l , r ,id ) ;
ll mid =(l+r ) /2;
updatelz ( l , mid , id *2 , u , v ,val ) ;
updatelz ( mid +1 , r ,id *2 +1 , u , v, val ) ;
seglz[id] = max ( seglz[id*2] , seglz[id*2+1 ] ) ;
}
ll getlz ( ll l , ll r ,ll id , ll u , ll v )
{
if ( r < u || v< l )
{
return -1e18;
}
if ( u<=l && r <=v )
{
return seglz[id] ;
}
push ( l , r ,id ) ;
ll mid = (l+r ) /2;
return max(getlz ( l , mid , id *2 , u , v) , getlz ( mid +1 , r ,id*2+1 , u , v )) ;
}
int main()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
//freopen(".inp", "r", stdin);
//freopen(".out", "w", stdout);
ll n,m ,q;
cin >>n >> m>> q;
vector < array<ll,3 >> query;
for (int i=1; i<=m; i ++ )
{
ll u ,v;
cin >> u >> v;
rem[i]= {u,v } ;
ll ran=rand (1, 10000000 );
ll num= base * ran ;
// cout<<num<<el;
update (1, n ,1 , u , num ) ;
update (1, n ,1 , v, -num) ;
updatelz (1, n , 1, u , v , -1e18 ) ;
baserem[i] = num;
}
// cout<<getlz(1, n , 1, 1, 5)<<el;
for (int i=1 ; i<=q; i ++ )
{
ll l , r ; cin >> l >> r;
query.pb({l,r,i} ) ;
}
ll idx = 1 ;
sort (all(query)) ;
for (auto[l, r ,id ] : query )
{
while (idx<=m && rem[idx].fi < l )
{
// cout<<idx<<el;
ll num = baserem[idx];
update ( 1, n , 1 , rem[idx].fi , -num ) ;
update ( 1, n , 1, rem[idx].se, num) ;
updatelz ( 1, n ,1 , rem[idx].fi , rem[idx].se , 1e18) ;
idx ++ ;
}
if (rem[idx].fi != l )
{
continue ;
}
if (get ( 1 , n , 1, l , r) ==0 && getlz(1, n , 1, l, r) == -1e18)
{
// cout<< l << " " << r << " " << get ( 1 , n , 1, l , r)<< el ;
res[id] = 1;
}
}
for (int i=1 ; i<=q; i ++ )
{
if ( res[i] )
{
cout<<"YES";
}
else cout<<"NO";
cout<<el;
}
}