#include #include #include #include using namespace std; class SortedMultiset { public: multiset ms; void add(int x) { ms.insert(x); } bool discard(int x) { auto it = ms.find(x); if (it != ms.end()) { ms.erase(it); return true; } return false; } int count(int x) { return ms.count(x); } int index_right(int x) { return distance(ms.begin(), ms.upper_bound(x)); } }; int main() { int n; cin >> n; vector> items(n); for (int i = 0; i < n; ++i) { cin >> items[i].first >> items[i].second; } sort(items.begin(), items.end()); vector cnt(100030); vector idxs; for (int i = 0; i < n; ++i) { idxs.push_back(items[i].first); cnt[items[i].second].add(items[i].first); } sort(idxs.begin(), idxs.end()); int q; cin >> q; for (int i = 0; i < q; ++i) { int x, y; cin >> x >> y; int ans = upper_bound(idxs.begin(), idxs.end(), x) - idxs.begin() - cnt[y].index_right(x); cout << ans << "\n"; } return 0; }