#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);
vector<int> T;
for(ll a=0;a<n;a++){
cin>>x[a]>>t[a]>>l[a]>>r[a];
T.push_back(l[a]);
T.push_back(r[a]);
}
vector<ll> z(q),y(q);
vector<pair<pair<int,int>,int>> Q(q);
for(ll a=0;a<q;a++){
cin>>z[a]>>y[a];
Q[a]={{y[a],z[a]},a};
}
sort(T.begin(),T.end());
sort(Q.begin(),Q.end());
vector<vector<pair<int,pair<int,int>>>> A(T.size());
for(int a=0;a<n;a++){
int i=lower_bound(T.begin(),T.end(),l[a])-T.begin();
A[i].push_back({1,{x[a],t[a]-1}});
i=lower_bound(T.begin(),T.end(),r[a])-T.begin();
A[i].push_back({2,{x[a],t[a]-1}});
}
vector<multiset<int>> c(k);
vector<int> ans(q);
ll time=0;
for(int a=0;a<q;a++){
if(time!=T.size())
while(T[time]<Q[a].first.first){
for(auto z:A[time]){
if(z.first==1){
c[z.second.second].insert(z.second.first);
}else{
c[z.second.second].erase(lower_bound(c[z.second.second].begin(),c[z.second.second].end(),z.second.first));
}
}
time++;
if(time==T.size()){
break;
}
}
ll D=0;
for(int b=0;b<k;b++){
if(c[b].size()==0){
D=-1;
break;
}else{
auto i=upper_bound(c[b].begin(),c[b].end(),Q[a].first.second);
if(i==c[b].end()){
i--;
D=max(D,abs(Q[a].first.second-(ll)(*i)));
}else if(i==c[b].begin()){
D=max(D,abs(Q[a].first.second-(ll)(*i)));
}else{
ll a1=abs(Q[a].first.second-(ll)(*i));
i--;
D=max(D,min(a1,abs(Q[a].first.second-(ll)(*i))));
}
}
}
ans[Q[a].second]=D;
}
for(int 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();
}
}