#include <bits/stdc++.h>
using namespace std;
struct area {
  int i;
  int ml, fb, fe;
  area(int i_, int ml_, int fb_, int fe_) : i(i_), ml(ml_), fb(fb_), fe(fe_) {}
};
int n, m, k, q;
bool results[200001];
vector<int> erookx[100001];
vector<int> erooky[100001];
vector<area> eareax[100001];
vector<area> eareay[100001];
int* s;
int* o;
vector<int>* erook;
vector<area>* earea;
int T[(1 << 18)];
int offset;
int qlow, qhigh;
inline void T_add(int i, int v) {
  i += offset;
  T[i] = v;
  for (i >>= 1; i; i >>= 1) T[i] = min(T[i << 1], T[(i << 1) + 1]);
}
inline int T_query(int cnode, int low, int high) {
  if (low >= qlow && high <= qhigh) return T[cnode];
  if (low >= qhigh || high <= qlow) return 0x7FFFFFFF;
  int mid = (low + high) / 2;
  return min(T_query(cnode * 2, low, mid), T_query(cnode * 2 + 1, mid, high));
}
inline void load() {
  scanf("%d%d%d%d", &n, &m, &k, &q);
  for (int i = 0; i < k; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    erookx[x - 1].push_back(y - 1);
    erooky[y - 1].push_back(x - 1);
  }
  for (int i = 0; i < q; i++) {
    int x1, y1, x2, y2;
    scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
    area ax(i, x1 - 1, y1 - 1, y2 - 1);
    area ay(i, y1 - 1, x1 - 1, x2 - 1);
    eareax[x2 - 1].push_back(ax);
    eareay[y2 - 1].push_back(ay);
  }
}
inline void sweep() {
  memset(T, 0xFF, sizeof(T));
  offset = 1;
  while ((offset <<= 1) < *o)
    ;
  for (int x = 0; x < *s; x++) {
    for (vector<int>::iterator it = erook[x].begin(); it != erook[x].end();
         it++) {
      T_add(*it, x);
    }
    for (vector<area>::iterator it = earea[x].begin(); it != earea[x].end();
         it++) {
      area a = *it;
      if (!results[a.i]) {
        qlow = a.fb;
        qhigh = a.fe + 1;
        int mia = T_query(1, 0, offset);
        if (mia >= a.ml) results[a.i] = true;
      }
    }
  }
}
inline void output() {
  for (int i = 0; i < q; i++)
    if (results[i])
      printf("YES\n");
    else
      printf("NO\n");
}
int main() {
  load();
  s = &n;
  o = &m;
  erook = erookx;
  earea = eareax;
  sweep();
  s = &m;
  o = &n;
  erook = erooky;
  earea = eareay;
  sweep();
  output();
  return EXIT_SUCCESS;
}
