#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#define ll long long
#define ld long double
#define vl vector<ll>
#define vi vector<int>
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define pb push_back
#define sz(v) (ll)(v.size())
#define f first
#define s second
#define pii pair<int, int>
#define pll pair<ll, ll>
using namespace std;
using namespace __gnu_pbds;
typedef tree<ll, null_type, less_equal<ll>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;
void solve()
{
ll r, c, n, i, j;
cin >> r >> c >> n;
vector<pll>vect;
for(i = 1; i <= n; i++)
{
ll a, b;
cin >> a >> b;
vect.pb({a, b});
}
ll t;
cin >> t;
vl v;
ll x1[t+5], y1[t+5], x2[t+5], y2[t+5];
set<ll>st;
for(i = 1; i <= t; i++)
{
cin >> x1[i] >> y1[i] >> x2[i] >> y2[i];
st.insert(x1[i]);
st.insert(x2[i]);
v.pb(x1[i]);
v.pb(x2[i]);
}
sort(all(v));
v.resize(unique(all(v)) - v.begin());
for(i = 1; i <= t; i++)
{
x1[i] = lower_bound(all(v), x1[i]) - v.begin() + 1;
x2[i] = lower_bound(all(v), x2[i]) - v.begin() + 1;
}
vl g[t+5];
for(auto u : vect)
{
ll x = u.f, y = u.s;
if(st.find(x) != st.end())
{
x = lower_bound(all(v), x) - v.begin() + 1;
g[x].pb(y);
}
}
for(auto u : st){
ll f = lower_bound(all(v), u) - v.begin() + 1;
sort(all(g[f]));
}
for(i = 1; i <= t; i++)
{
if(!sz(g[x1[i]]) || g[x1[i]].back() < y1[i] || y2[i] < y1[i])
cout << "No\n";
else{
ll f = lower_bound(all(g[x1[i]]), y1[i]) - g[x1[i]].begin();
if(g[x1[i]][f] <= y2[i])
cout << "Yes\n";
else
cout << "No\n";
}
}
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ll tests = 1;
//cin >> tests;
while(tests--)
{
solve();
}
}