#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
const int maxm = 1e5 + 10;
struct node {
  int l, r, k, id;
  bool operator<(const node& a) const {
    if (l != a.l) return l < a.l;
    return r < a.r;
  }
} s[maxn], a[maxm];
set<pair<int, int> > st;
int cnt[maxm], ans[maxn];
int main() {
  int N, M;
  scanf("%d", &N);
  for (int i = 1; i <= N; i++) {
    scanf("%d%d", &s[i].l, &s[i].r);
    s[i].id = i;
  }
  scanf("%d", &M);
  for (int i = 1; i <= M; i++) {
    scanf("%d%d%d", &a[i].l, &a[i].r, &a[i].k);
    a[i].id = i;
    cnt[i] = a[i].k;
  }
  sort(s + 1, s + N + 1);
  sort(a + 1, a + M + 1);
  st.insert(make_pair(0x3f3f3f3f, 0));
  bool label = true;
  int idx = 1;
  for (int i = 1; i <= N && label; i++) {
    while (idx <= M && a[idx].l <= s[i].l) {
      st.insert(make_pair(a[idx].r, a[idx].id));
      idx++;
    }
    pair<int, int> temp = *(st.upper_bound(make_pair(s[i].r, 0)));
    if (temp.first == 0x3f3f3f3f) {
      label = false;
      break;
    }
    cnt[temp.second]--;
    ans[s[i].id] = temp.second;
    if (cnt[temp.second] == 0) st.erase(temp);
  }
  if (!label)
    printf("NO\n");
  else {
    printf("YES\n");
    for (int i = 1; i <= N; i++) printf("%d%c", ans[i], i == N ? '\n' : ' ');
  }
  return 0;
}
