#include <bits/stdc++.h>
using namespace std;
const int N = 200005;
int it[4 * N];
int lastApp[N];
struct Rec {
  int first, second, xx, yy, id;
  Rec() {}
  Rec(int first, int second, int xx, int yy, int id)
      : first(first), second(second), xx(xx), yy(yy), id(id) {}
};
void update(int k, int l, int r, int id, int val) {
  if (l > id || r < id) return;
  if (l == r && l == id) {
    it[k] = val;
    return;
  }
  int mid = (l + r) / 2;
  update(2 * k, l, mid, id, val);
  update(2 * k + 1, mid + 1, r, id, val);
  it[k] = min(it[2 * k], it[2 * k + 1]);
}
int get(int k, int l, int r, int u, int v) {
  if (l > v || r < u) return 1e9;
  if (l >= u && r <= v) return it[k];
  int mid = (l + r) / 2;
  int g1 = get(2 * k, l, mid, u, v);
  int g2 = get(2 * k + 1, mid + 1, r, u, v);
  return min(g1, g2);
}
int n, m, k, q;
Rec rec[N];
pair<int, int> rock[N];
bool ans[N];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> k >> q;
  for (int i = 1; i <= k; i++) {
    cin >> rock[i].first >> rock[i].second;
  }
  for (int i = 1; i <= q; i++) {
    cin >> rec[i].first >> rec[i].second >> rec[i].xx >> rec[i].yy;
    rec[i].id = i;
  }
  sort(rec + 1, rec + q + 1,
       [](Rec first, Rec second) { return first.yy < second.yy; });
  sort(rock + 1, rock + k + 1, [](pair<int, int> first, pair<int, int> second) {
    return first.second < second.second;
  });
  int cur = 1;
  for (int i = 1; i <= q; i++) {
    while (cur <= k && rock[cur].second <= rec[i].yy) {
      update(1, 1, n, rock[cur].first, rock[cur].second);
      cur++;
    }
    int foo = get(1, 1, n, rec[i].first, rec[i].xx);
    if (foo >= rec[i].second) ans[rec[i].id] = 1;
  }
  sort(rec + 1, rec + q + 1,
       [](Rec first, Rec second) { return first.xx < second.xx; });
  sort(rock + 1, rock + k + 1);
  memset(it, 0, sizeof(it));
  cur = 1;
  for (int i = 1; i <= q; i++) {
    while (cur <= k && rock[cur].first <= rec[i].xx) {
      update(1, 1, m, rock[cur].second, rock[cur].first);
      cur++;
    }
    int foo = get(1, 1, m, rec[i].second, rec[i].yy);
    if (foo >= rec[i].first) ans[rec[i].id] = 1;
  }
  for (int i = 1; i <= q; i++) {
    if (ans[i])
      cout << "YES\n";
    else
      cout << "NO\n";
  }
  return 0;
}
