#include using namespace std; using ll = int64_t; using ull = uint64_t; using vi = vector; using vc = vector; using vs = vector; using vd = vector; using vll = vector; using vb = vector; using pii = pair; using psi = pair; using pis = pair; using pci = pair; using tiii = tuple; using mii = map; using mis = map; using msi = map; using mci = map; using si = set; using ss = set; using sc = set; using sll = set; using spii = set; using qi = queue; using vvc = vector; using vvi = vector; using vvb = vector; using vvs = vector; using vvll = vector; using vpii = vector; using vpci = vector; using mivi = map; using mivs = map; using misi = map; int main() { int N; cin >> N; vpii AB(N); mivi bad; for (int i = 0; i < N; i++) { cin >> AB[i].first >> AB[i].second; } sort(AB.begin(), AB.end()); vi A(N); for (int i = 0; i < N; i++) { A[i] = AB[i].first; bad[AB[i].second].push_back(i); } int Q; cin >> Q; for (int i = 0; i < Q; i++) { int X,Y,all,weak; cin >> X >> Y; all = upper_bound(A.begin(), A.end(), X) - A.begin(); if (bad.count(Y)) { weak = upper_bound(bad[Y].begin(), bad[Y].end(), all - 1) - bad[Y].begin(); } else weak = 0; cout << all - weak << endl; } }