#include <bits/stdc++.h>
using namespace std;
const int N = 1e5;
const int oo = 1e9 + 5;
int du[] = {-1, 0, 0, 1};
int dv[] = {0, -1, 1, 0};
const long long mod = 1e9 + 7;
long long sqr(long long x) { return x * x; }
int getbit(int state, int i) { return ((state >> i) & 1); }
int n, m, k, ver[3 * N + 5], nnode;
struct Node {
  int l, r, val;
  Node(int L = 0, int R = 0, int Val = 0) {
    l = L;
    r = R;
    val = Val;
  }
} f[N * 100];
int build(int l, int r) {
  if (l > r) return 0;
  int cur = ++nnode;
  if (l == r) {
    f[cur] = Node(0, 0, oo);
    return cur;
  }
  int mid = (l + r) / 2;
  f[cur] = Node(build(l, mid), build(mid + 1, r), oo);
  return cur;
}
int update(int oldid, int l, int r, int u, int val) {
  if (l > r || l > u || r < u) return 0;
  int cur = ++nnode;
  if (l == r) {
    f[cur] = Node(0, 0, min(f[oldid].val, val));
    return cur;
  }
  int mid = (l + r) / 2;
  if (u <= mid) {
    f[cur].l = update(f[oldid].l, l, mid, u, val);
    f[cur].r = f[oldid].r;
    f[cur].val = max(f[f[cur].l].val, f[f[cur].r].val);
  } else {
    f[cur].r = update(f[oldid].r, mid + 1, r, u, val);
    f[cur].l = f[oldid].l;
    f[cur].val = max(f[f[cur].l].val, f[f[cur].r].val);
  }
  return cur;
}
int get(int id, int l, int r, int u, int v) {
  if (l > r || l > v || r < u) return -1;
  if (u <= l && r <= v) return f[id].val;
  int mid = (l + r) / 2;
  return max(get(f[id].l, l, mid, u, v), get(f[id].r, mid + 1, r, u, v));
}
struct Clara {
  int l, r, p;
  Clara(int L = 0, int R = 0, int P = 0) {
    l = L;
    r = R;
    p = P;
  }
} a[3 * N + 5];
bool cmp(Clara X, Clara Y) { return X.l < Y.l; }
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> m >> k;
  for (int i = 1; i <= k; i++) cin >> a[i].l >> a[i].r >> a[i].p;
  sort(a + 1, a + 1 + k, cmp);
  ver[k + 1] = build(1, n);
  for (int i = k; i >= 1; i--)
    ver[i] = update(ver[i + 1], 1, n, a[i].p, a[i].r);
  for (int i = 1; i <= m; i++) {
    int A, B, x, y;
    cin >> A >> B >> x >> y;
    int vt = lower_bound(a + 1, a + 1 + k, Clara(x, -oo, -oo), cmp) - a;
    if (get(ver[vt], 1, n, A, B) > y)
      cout << "no" << endl;
    else
      cout << "yes" << endl;
  }
  return 0;
}
