#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int n, m, k, l, r, p, a, b, x, y;
vector<pair<int, int> > arr[N], seg[4 * N];
int mn;
inline void fix(vector<pair<int, int> > &v) {
  mn = 1000000010;
  for (int i = (int)v.size() - 1; i >= 0; i--) {
    v[i].second = min(v[i].second, mn);
    mn = v[i].second;
  }
}
int getvalidx;
inline int getval(int idx, int l) {
  getvalidx = lower_bound(seg[idx].begin(), seg[idx].end(), make_pair(l, 0)) -
              seg[idx].begin();
  if (getvalidx == (int)seg[idx].size()) return 1000000010;
  return seg[idx][getvalidx].second;
}
void build(int s, int e, int idx) {
  if (s == e) {
    swap(seg[idx], arr[s]);
    return;
  }
  build(s, ((s + e) >> 1), (idx << 1));
  build(((s + e) >> 1) + 1, e, (idx << 1) + 1);
  if (seg[(idx << 1) + 1].size() == 0 || (int)seg[(idx << 1) + 1].size() == 0)
    return;
  for (int i = 0; i < (int)seg[(idx << 1) + 1].size(); i++) {
    seg[idx].push_back(seg[(idx << 1) + 1][i]);
    seg[idx].back().second = 0;
  }
  for (int i = 0; i < (int)seg[(idx << 1)].size(); i++) {
    seg[idx].push_back(seg[(idx << 1)][i]);
    seg[idx].back().second = 0;
  }
  sort(seg[idx].begin(), seg[idx].end());
  seg[idx].resize(unique(seg[idx].begin(), seg[idx].end()) - seg[idx].begin());
  for (int i = 0; i < (int)seg[idx].size(); i++)
    seg[idx][i].second = max(getval((idx << 1), seg[idx][i].first),
                             getval((idx << 1) + 1, seg[idx][i].first));
  fix(seg[idx]);
}
bool get(int s, int e, int idx) {
  if (s > r || e < l) return true;
  if (s >= l && e <= r) {
    if ((int)seg[idx].size() == 0) return false;
    return (getval(idx, x) <= y);
  }
  return (get(s, ((s + e) >> 1), (idx << 1)) &&
          get(((s + e) >> 1) + 1, e, (idx << 1) + 1));
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 0; i < k; i++) {
    scanf("%d%d%d", &l, &r, &p);
    arr[p - 1].push_back(make_pair(l, r));
  }
  for (int i = 0; i < n; i++) {
    sort(arr[i].begin(), arr[i].end());
    fix(arr[i]);
    arr[i].resize(unique(arr[i].begin(), arr[i].end()) - arr[i].begin());
  }
  build(0, n - 1, 1);
  while (m--) {
    scanf("%d%d%d%d", &l, &r, &x, &y);
    l--, r--;
    if (get(0, n - 1, 1))
      puts("yes");
    else
      puts("no");
    fflush(stdout);
  }
  return 0;
}
