#include <iostream>
#include <climits>
#include <unordered_map>
#include <random>
#include <chrono>
#include <numeric>
#include <vector>
#include <algorithm>
#include <map>
#include <queue>
#include <stack>
#include <deque>
#include <functional>
#include <bitset>
#include <string>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <cmath>
#include <cassert>
#include <list>
#include <forward_list>
#include <set>
#include <unordered_set>
#include <cstdint>
using namespace std;
struct node {
vector<pair<int, int>> sect;
node(vector<pair<int, int>> sectt = vector<pair<int, int>>{}) {
this->sect = sectt;
}
};
vector<node> tree;
vector<pair<int, int>> v;
node mergee(node a, node b) {
vector<pair<int, int>> ea, eb;
for (int i = 0; i < (int)a.sect.size(); i++) {
ea.push_back({ a.sect[i].first, -1 });
ea.push_back({ a.sect[i].second, 1 });
}
for (int i = 0; i < (int)b.sect.size(); i++) {
eb.push_back({ b.sect[i].first, -1 });
eb.push_back({ b.sect[i].second, 1 });
}
vector<pair<int, int>> e;
merge(ea.begin(), ea.end(), eb.begin(), eb.end(), back_inserter(e));
vector<pair<int, int>> ans;
int openn = 0;
int pred = -1;
for (auto [x, tip] : e) {
if (tip == -1) {
if (openn == 0) {
pred = x;
}
openn++;
}
else {
openn--;
if (openn == 0) {
ans.push_back({ pred, x });
pred = -1;
}
}
}
node aaa(ans);
return aaa;
}
void build(int i, int l, int r) {
if (l + 1 == r) {
tree[i].sect = { v[l] };
return;
}
int mid = (l + r) / 2;
build(2 * i + 1, l, mid);
build(2 * i + 2, mid, r);
tree[i] = mergee(tree[2 * i + 1], tree[2 * i + 2]);
}
int findd(int i, int l, int r, int ql, int qr, int x) {
if (qr <= l || r <= ql) {
return -1;
}
if (l + 1 == r) {
if (tree[i].sect[0].first <= x && x <= tree[i].sect[0].second) {
return l;
}
return -1;
}
if (ql <= l && r <= qr) {
int mid = (l + r) / 2;
int j = upper_bound(tree[2 * i + 1].sect.begin(), tree[2 * i + 1].sect.end(), pair<int, int>{x, 1e9}) - tree[2 * i + 1].sect.begin() - 1;
if (j != -1 && tree[2 * i + 1].sect[j].second >= x) {
return findd(2 * i + 1, l, mid, ql, qr, x);
}
j = upper_bound(tree[2 * i + 2].sect.begin(), tree[2 * i + 2].sect.end(), pair<int, int>{x, 1e9}) - tree[2 * i + 2].sect.begin() - 1;
if (j != -1 && tree[2 * i + 2].sect[j].second >= x) {
return findd(2 * i + 2, mid, r, ql, qr, x);
}
return -1;
}
int mid = (l + r) / 2;
int ansk = -1;
if (!(qr <= l || mid <= ql)) {
ansk = findd(2 * i + 1, l, mid, ql, qr, x);
}
if (ansk != -1) {
return ansk;
}
if (!(qr <= mid || r <= ql)) {
ansk = findd(2 * i + 2, mid, r, ql, qr, x);
}
if (ansk != -1) {
return ansk;
}
return -1;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
v.resize(n);
for (int i = 0; i < n; i++) {
cin >> v[i].first >> v[i].second;
}
tree.resize(4 * n);
build(0, 0, n);
vector<int> outt(n);
for (int i = n - 1; i >= 0; i--) {
int indx = findd(0, 0, n, i + 1, n, v[i].second);
if (indx == -1) {
outt[i] = v[i].second;
}
else {
outt[i] = outt[indx];
}
}
int m;
cin >> m;
for (int i = 0; i < m; i++) {
int x, t;
cin >> x >> t;
x--;
int indx = findd(0, 0, n, x, n, t);
if (indx == -1) {
cout << 0 << '\n';
}
else {
cout << outt[indx] - t << '\n';
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y2xpbWl0cz4KI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CiNpbmNsdWRlIDxyYW5kb20+CiNpbmNsdWRlIDxjaHJvbm8+CiNpbmNsdWRlIDxudW1lcmljPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxzdGFjaz4KI2luY2x1ZGUgPGRlcXVlPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPGJpdHNldD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDxmc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y2Fzc2VydD4KI2luY2x1ZGUgPGxpc3Q+CiNpbmNsdWRlIDxmb3J3YXJkX2xpc3Q+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PgojaW5jbHVkZSA8Y3N0ZGludD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3Qgbm9kZSB7CiAgICB2ZWN0b3I8cGFpcjxpbnQsIGludD4+IHNlY3Q7CiAgICBub2RlKHZlY3RvcjxwYWlyPGludCwgaW50Pj4gc2VjdHQgPSB2ZWN0b3I8cGFpcjxpbnQsIGludD4+e30pIHsKICAgICAgICB0aGlzLT5zZWN0ID0gc2VjdHQ7CiAgICB9Cn07Cgp2ZWN0b3I8bm9kZT4gdHJlZTsKdmVjdG9yPHBhaXI8aW50LCBpbnQ+PiB2OwoKbm9kZSBtZXJnZWUobm9kZSBhLCBub2RlIGIpIHsKICAgIHZlY3RvcjxwYWlyPGludCwgaW50Pj4gZWEsIGViOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCAoaW50KWEuc2VjdC5zaXplKCk7IGkrKykgewogICAgICAgIGVhLnB1c2hfYmFjayh7IGEuc2VjdFtpXS5maXJzdCwgLTEgfSk7CiAgICAgICAgZWEucHVzaF9iYWNrKHsgYS5zZWN0W2ldLnNlY29uZCwgMSB9KTsKICAgIH0KICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKGludCliLnNlY3Quc2l6ZSgpOyBpKyspIHsKICAgICAgICBlYi5wdXNoX2JhY2soeyBiLnNlY3RbaV0uZmlyc3QsIC0xIH0pOwogICAgICAgIGViLnB1c2hfYmFjayh7IGIuc2VjdFtpXS5zZWNvbmQsIDEgfSk7CiAgICB9CiAgICB2ZWN0b3I8cGFpcjxpbnQsIGludD4+IGU7CiAgICBtZXJnZShlYS5iZWdpbigpLCBlYS5lbmQoKSwgZWIuYmVnaW4oKSwgZWIuZW5kKCksIGJhY2tfaW5zZXJ0ZXIoZSkpOwogICAgdmVjdG9yPHBhaXI8aW50LCBpbnQ+PiBhbnM7CiAgICBpbnQgb3Blbm4gPSAwOwogICAgaW50IHByZWQgPSAtMTsKICAgIGZvciAoYXV0byBbeCwgdGlwXSA6IGUpIHsKICAgICAgICBpZiAodGlwID09IC0xKSB7CiAgICAgICAgICAgIGlmIChvcGVubiA9PSAwKSB7CiAgICAgICAgICAgICAgICBwcmVkID0geDsKICAgICAgICAgICAgfQogICAgICAgICAgICBvcGVubisrOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgb3Blbm4tLTsKICAgICAgICAgICAgaWYgKG9wZW5uID09IDApIHsKICAgICAgICAgICAgICAgIGFucy5wdXNoX2JhY2soeyBwcmVkLCB4IH0pOwogICAgICAgICAgICAgICAgcHJlZCA9IC0xOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgbm9kZSBhYWEoYW5zKTsKICAgIHJldHVybiBhYWE7Cn0KCnZvaWQgYnVpbGQoaW50IGksIGludCBsLCBpbnQgcikgewogICAgaWYgKGwgKyAxID09IHIpIHsKICAgICAgICB0cmVlW2ldLnNlY3QgPSB7IHZbbF0gfTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpbnQgbWlkID0gKGwgKyByKSAvIDI7CiAgICBidWlsZCgyICogaSArIDEsIGwsIG1pZCk7CiAgICBidWlsZCgyICogaSArIDIsIG1pZCwgcik7CiAgICB0cmVlW2ldID0gbWVyZ2VlKHRyZWVbMiAqIGkgKyAxXSwgdHJlZVsyICogaSArIDJdKTsKfQoKaW50IGZpbmRkKGludCBpLCBpbnQgbCwgaW50IHIsIGludCBxbCwgaW50IHFyLCBpbnQgeCkgewogICAgaWYgKHFyIDw9IGwgfHwgciA8PSBxbCkgewogICAgICAgIHJldHVybiAtMTsKICAgIH0KICAgIGlmIChsICsgMSA9PSByKSB7CiAgICAgICAgaWYgKHRyZWVbaV0uc2VjdFswXS5maXJzdCA8PSB4ICYmIHggPD0gdHJlZVtpXS5zZWN0WzBdLnNlY29uZCkgewogICAgICAgICAgICByZXR1cm4gbDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIC0xOwogICAgfQogICAgaWYgKHFsIDw9IGwgJiYgciA8PSBxcikgewogICAgICAgIGludCBtaWQgPSAobCArIHIpIC8gMjsKICAgICAgICBpbnQgaiA9IHVwcGVyX2JvdW5kKHRyZWVbMiAqIGkgKyAxXS5zZWN0LmJlZ2luKCksIHRyZWVbMiAqIGkgKyAxXS5zZWN0LmVuZCgpLCBwYWlyPGludCwgaW50Pnt4LCAxZTl9KSAtIHRyZWVbMiAqIGkgKyAxXS5zZWN0LmJlZ2luKCkgLSAxOwogICAgICAgIGlmIChqICE9IC0xICYmIHRyZWVbMiAqIGkgKyAxXS5zZWN0W2pdLnNlY29uZCA+PSB4KSB7CiAgICAgICAgICAgIHJldHVybiBmaW5kZCgyICogaSArIDEsIGwsIG1pZCwgcWwsIHFyLCB4KTsKICAgICAgICB9CiAgICAgICAgaiA9IHVwcGVyX2JvdW5kKHRyZWVbMiAqIGkgKyAyXS5zZWN0LmJlZ2luKCksIHRyZWVbMiAqIGkgKyAyXS5zZWN0LmVuZCgpLCBwYWlyPGludCwgaW50Pnt4LCAxZTl9KSAtIHRyZWVbMiAqIGkgKyAyXS5zZWN0LmJlZ2luKCkgLSAxOwogICAgICAgIGlmIChqICE9IC0xICYmIHRyZWVbMiAqIGkgKyAyXS5zZWN0W2pdLnNlY29uZCA+PSB4KSB7CiAgICAgICAgICAgIHJldHVybiBmaW5kZCgyICogaSArIDIsIG1pZCwgciwgcWwsIHFyLCB4KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIC0xOwogICAgfQogICAgaW50IG1pZCA9IChsICsgcikgLyAyOwogICAgaW50IGFuc2sgPSAtMTsKICAgIGlmICghKHFyIDw9IGwgfHwgbWlkIDw9IHFsKSkgewogICAgICAgIGFuc2sgPSBmaW5kZCgyICogaSArIDEsIGwsIG1pZCwgcWwsIHFyLCB4KTsKICAgIH0KICAgIGlmIChhbnNrICE9IC0xKSB7CiAgICAgICAgcmV0dXJuIGFuc2s7CiAgICB9CiAgICBpZiAoIShxciA8PSBtaWQgfHwgciA8PSBxbCkpIHsKICAgICAgICBhbnNrID0gZmluZGQoMiAqIGkgKyAyLCBtaWQsIHIsIHFsLCBxciwgeCk7CiAgICB9CiAgICBpZiAoYW5zayAhPSAtMSkgewogICAgICAgIHJldHVybiBhbnNrOwogICAgfQogICAgcmV0dXJuIC0xOwp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgIGludCBuOwogICAgY2luID4+IG47CiAgICB2LnJlc2l6ZShuKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgY2luID4+IHZbaV0uZmlyc3QgPj4gdltpXS5zZWNvbmQ7CiAgICB9CiAgICB0cmVlLnJlc2l6ZSg0ICogbik7CiAgICBidWlsZCgwLCAwLCBuKTsKICAgIHZlY3RvcjxpbnQ+IG91dHQobik7CiAgICBmb3IgKGludCBpID0gbiAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgaW50IGluZHggPSBmaW5kZCgwLCAwLCBuLCBpICsgMSwgbiwgdltpXS5zZWNvbmQpOwogICAgICAgIGlmIChpbmR4ID09IC0xKSB7CiAgICAgICAgICAgIG91dHRbaV0gPSB2W2ldLnNlY29uZDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG91dHRbaV0gPSBvdXR0W2luZHhdOwogICAgICAgIH0KICAgIH0KICAgIGludCBtOwogICAgY2luID4+IG07CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG07IGkrKykgewogICAgICAgIGludCB4LCB0OwogICAgICAgIGNpbiA+PiB4ID4+IHQ7CiAgICAgICAgeC0tOwogICAgICAgIGludCBpbmR4ID0gZmluZGQoMCwgMCwgbiwgeCwgbiwgdCk7CiAgICAgICAgaWYgKGluZHggPT0gLTEpIHsKICAgICAgICAgICAgY291dCA8PCAwIDw8ICdcbic7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBjb3V0IDw8IG91dHRbaW5keF0gLSB0IDw8ICdcbic7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0=