#include<bits/stdc++.h>
using namespace std;
#define ll long long
void solve(){
ll n,k,q;
cin>>n>>k>>q;
vector<ll> x(n),t(n),l(n),r(n);
map<ll,vector<pair<ll,pair<ll,ll>>>> mp;
for(ll a=0;a<n;a++){
cin>>x[a]>>t[a]>>l[a]>>r[a];
mp[l[a]].push_back({1,{x[a],t[a]}});
mp[r[a]+1].push_back({2,{x[a],t[a]}});
}
vector<ll> z(q),y(q);
vector<pair<pair<ll,ll>,ll>> Q(q);
for(ll a=0;a<q;a++){
cin>>z[a]>>y[a];
Q[a]={{y[a],z[a]},a};
}
sort(Q.begin(),Q.end());
ll year=0;
vector<multiset<ll>> st(k+1);
vector<ll> ans(q);
for(ll a=0;a<q;a++){
ll year1=Q[a].first.first;
auto i=mp.upper_bound(year);
while((*i).first<=year1){
if(i==mp.end()){
break;
}
for(auto z:(*i).second){
if(z.first==1){
st[z.second.second].insert(z.second.first);
}else{
st[z.second.second].erase(st[z.second.second].lower_bound(z.second.first));
}
}year=(*i).first;
i++;
}
ll D=0;
for(ll b=1;b<=k;b++){
ll d=-1;
auto j=lower_bound(st[b].begin(),st[b].end(),Q[a].first.second);
if(j!=st[b].end()){
d=max(d,abs(Q[a].first.second-*j));
}
if(j!=st[b].begin()){
j--;
d=max(d,abs(Q[a].first.second-*j));
}
if(d==-1){
D=-1;
break;
}else{
D=max(D,d);
}
}
ans[Q[a].second]=D;
}
for(ll a=0;a<q;a++){
cout<<ans[a]<<endl;
}
}
signed main(){
ios::sync_with_stdio();
cin.tie(0);
cout.tie(0);
ll t=1;
// cin>>t;
for(ll a=0;a<t;a++){
solve();
}
}