#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200001;
int tree[MAXN * 4];
int base;
struct square {
  int x1, y1, x2, y2;
} sq[MAXN];
vector<pair<int, int> > rook;
vector<int> cols[MAXN];
vector<int> Q[MAXN];
void update(int idx, int value) {
  idx += base - 1;
  tree[idx] = value;
  for (; idx > 1; idx /= 2) {
    tree[idx / 2] = min(tree[idx ^ 1], tree[idx]);
  }
}
int query(int l, int r) {
  int ret = 1e9;
  for (l += base - 1, r += base - 1; l <= r; l /= 2, r /= 2) {
    if (l & 1) ret = min(ret, tree[l++]);
    if (~r & 1) ret = min(ret, tree[r--]);
  }
  return ret;
}
int ok[MAXN];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, m, k, q;
  cin >> n >> m >> k >> q;
  for (int i = 1; i <= k; i++) {
    int x, y;
    cin >> x >> y;
    rook.push_back({x, y});
    cols[x].push_back(y);
  }
  for (base = 1; base < max(n, m); base *= 2)
    ;
  for (int i = 1; i <= q; i++) {
    cin >> sq[i].x1 >> sq[i].y1 >> sq[i].x2 >> sq[i].y2;
    Q[sq[i].x2].push_back(i);
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < cols[i].size(); j++) {
      int Y_value = cols[i][j];
      update(Y_value, i);
    }
    for (int j = 0; j < Q[i].size(); j++) {
      int id = Q[i][j];
      int y1 = sq[id].y1, y2 = sq[id].y2;
      int value = query(y1, y2);
      ok[id] |= (value >= sq[id].x1);
    }
  }
  for (int i = 1; i < MAXN; i++) cols[i].clear(), Q[i].clear();
  memset(tree, 0, sizeof(tree));
  for (int i = 0; i < rook.size(); i++) {
    cols[rook[i].second].push_back(rook[i].first);
  }
  swap(n, m);
  for (int i = 1; i <= q; i++) {
    swap(sq[i].x1, sq[i].y1);
    swap(sq[i].x2, sq[i].y2);
    Q[sq[i].x2].push_back(i);
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < cols[i].size(); j++) {
      int Y_value = cols[i][j];
      update(Y_value, i);
    }
    for (int j = 0; j < Q[i].size(); j++) {
      int id = Q[i][j];
      int y1 = sq[id].y1, y2 = sq[id].y2;
      int value = query(y1, y2);
      ok[id] |= (value >= sq[id].x1);
    }
  }
  for (int i = 1; i <= q; i++) {
    if (ok[i])
      cout << "YES\n";
    else
      cout << "NO\n";
  }
  return 0;
}
