#include <bits/stdc++.h>
using namespace std;
const int MX = 1e5 + 1;
int n, m, k, q;
int R[4 * MX];
struct pos {
  int x, y;
} rk[2 * MX];
bool rk_cmpY(pos a, pos b) { return a.y < b.y; }
struct ask {
  int x, y, X, Y;
  int flag, ans;
} Q[2 * MX];
bool cmpY(ask a, ask b) { return a.Y < b.Y; }
void build(int node, int b, int e) {
  R[node] = 0;
  if (b == e) {
    return;
  }
  build(2 * node, b, (b + e) / 2);
  build(2 * node + 1, (b + e) / 2 + 1, e);
}
int query(int node, int b, int e, int i, int j) {
  if (i > e || j < b) return -1;
  if (i <= b && e <= j) return R[node];
  int x, y;
  x = query(2 * node, b, (b + e) / 2, i, j);
  y = query(2 * node + 1, (b + e) / 2 + 1, e, i, j);
  if (x == -1) return y;
  if (y == -1) return x;
  return min(x, y);
}
void update(int node, int b, int e, int i, int val) {
  if (i < b || i > e) return;
  if (b == e) {
    R[node] = val;
    return;
  }
  update(2 * node, b, (b + e) / 2, i, val);
  update(2 * node + 1, (b + e) / 2 + 1, e, i, val);
  R[node] = min(R[2 * node], R[2 * node + 1]);
}
bool ret(ask a, ask b) { return a.flag < b.flag; }
int main() {
  scanf("%d%d%d%d", &n, &m, &k, &q);
  for (int i = 0; i < k; i++) {
    scanf("%d%d", &rk[i].x, &rk[i].y);
  }
  for (int i = 0; i < q; i++) {
    scanf("%d%d%d%d", &Q[i].x, &Q[i].y, &Q[i].X, &Q[i].Y);
    Q[i].flag = i;
    Q[i].ans = 0;
  }
  for (int j = 0; j < 2; j++) {
    sort(rk, rk + k, rk_cmpY);
    sort(Q, Q + q, cmpY);
    build(1, 1, n);
    int f = 0, g = 0;
    for (int i = 1; i <= m; i++) {
      while (f < k && rk[f].y == i) {
        update(1, 1, n, rk[f].x, i);
        f++;
      }
      while (g < q && Q[g].Y == i) {
        int tmp = query(1, 1, n, Q[g].x, Q[g].X);
        if (query(1, 1, n, Q[g].x, Q[g].X) >= Q[g].y) {
          Q[g].ans = 1;
        }
        g++;
      }
    }
    if (j == 1) break;
    swap(n, m);
    for (int i = 0; i < k; i++) {
      swap(rk[i].x, rk[i].y);
    }
    for (int i = 0; i < q; i++) {
      swap(Q[i].x, Q[i].y);
      swap(Q[i].X, Q[i].Y);
    }
  }
  sort(Q, Q + q, ret);
  for (int i = 0; i < q; i++) {
    if (Q[i].ans == 1)
      printf("YES\n");
    else
      printf("NO\n");
  }
  return 0;
}
