#include <bits/stdc++.h>
using namespace std;
const long double EPS = (long double)1e-7;
const long double PI = acos(0) * 2;
bool isZero(const long double& x) { return abs(x) <= EPS; }
int sign(const long double& x) { return isZero(x) ? 0 : (0 < x ? 1 : -1); }
long long gcd(long long a, long long b) {
  for (; b; a %= b, swap(a, b)) {
  }
  return abs(a);
}
pair<long long, long long> operator+(const pair<long long, long long>& a,
                                     const pair<long long, long long>& b) {
  return pair<long long, long long>(a.first + b.first, a.second + b.second);
}
pair<long long, long long> operator-(const pair<long long, long long>& a,
                                     const pair<long long, long long>& b) {
  return pair<long long, long long>(a.first - b.first, a.second - b.second);
}
pair<long long, long long> operator*(const pair<long long, long long>& a,
                                     const long long& b) {
  return pair<long long, long long>(a.first * b, a.second * b);
}
long long operator*(const pair<long long, long long>& a,
                    const pair<long long, long long>& b) {
  return a.first * b.second - b.first * a.second;
}
long long ccw(const pair<long long, long long>& a,
              const pair<long long, long long>& b,
              const pair<long long, long long>& c) {
  return a * b + b * c + c * a;
}
void fg(vector<int> G[], int a, int b) {
  G[a].emplace_back(b);
  G[b].emplace_back(a);
}
void fg(vector<pair<int, int> > G[], int a, int b, int c) {
  G[a].emplace_back(b, c);
  G[b].emplace_back(a, c);
}
const int MAXN = 100055;
const int MAXK = 100055;
struct EVT {
  EVT(int idx, int t, int x, int y) : idx(idx), t(t), x(x), y(y) {}
  int idx, t, x, y;
  bool operator<(const EVT& q) const {
    if (x != q.x) return x < q.x;
    if (t != q.t) return t < q.t;
    return y < q.y;
  }
};
vector<EVT> EV;
set<pair<int, int> > PQ;
int A[MAXN], B[MAXN], C[MAXN];
int D[MAXK], E[MAXK];
int Ans[MAXK];
int N, K;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> K;
  for (int i = 1; i <= K; i++) cin >> D[i] >> E[i];
  cin >> N;
  for (int i = 1; i <= N; i++) cin >> A[i] >> B[i] >> C[i];
  for (int i = 1; i <= K; i++) EV.emplace_back(i, 1, D[i], E[i]);
  for (int i = 1; i <= N; i++) EV.emplace_back(i, 0, A[i], B[i]);
  sort(((EV).begin()), ((EV).end()));
  for (auto& ev : EV) {
    int idx = ev.idx;
    if (!ev.t) {
      PQ.insert({B[idx], idx});
      continue;
    }
    auto it = PQ.lower_bound({E[idx], -1});
    if (PQ.end() == it) {
      puts("NO");
      exit(0);
    }
    int p = it->second;
    if (!--C[p]) PQ.erase(it);
    Ans[idx] = p;
  }
  cout << "YES\n";
  for (int i = 1; i <= K; i++) cout << Ans[i] << ' ';
  cout << '\n';
  return 0;
}
