#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
ll n,k,q,i,j,a,b,c,d;
cin>>n>>k>>q;
vector<vector<ll>> s;
vector<multiset<ll>> st(k+1);
for(i=0 ; i<n ; i++){
cin>>a>>b>>c>>d;
s.push_back({c,a,b,1});
s.push_back({d+1,a,b,-1});
}
vector<vector<ll>> x(q,vector<ll>(3));
for(i=0 ; i<q ; i++){
cin>>x[i][1]>>x[i][0];
x[i][2]=i;
}
sort(s.begin(),s.end());
sort(x.begin(),x.end());
ll ind=0;
vector<ll> ans(q,-1);
for(i=0 ; i<q ; i++){
while(ind<2*n and s[ind][0]<=x[i][0]){
if(s[ind][3]==1){
ll type=s[ind][2],loc=s[ind][1];
st[type].insert(loc);
st[type].insert(-loc);
}
else{
ll type=s[ind][2],loc=s[ind][1];
st[type].erase(st[type].find(loc));
st[type].erase(st[type].find(-loc));
}
ind++;
}
for(j=1 ; j<=k ; j++){
if(st[j].size()==0){
ans[x[i][2]]=-1;
break;
}
ll val=1e9;
auto itr1=st[j].lower_bound(x[i][1]);
if(itr1!=st[j].end()) val=min(val,*itr1-x[i][1]);
auto itr2=st[j].lower_bound(-x[i][1]);
if(itr2!=st[j].end()) val=min(val,*itr2+x[i][1]);
ans[x[i][2]]=max(val,ans[x[i][2]]);
}
}
for(i=0 ; i<q ; i++) cout<<ans[i]<<"\n";
return 0;
}