#include <bits/stdc++.h>
#define fi first
#define endl '\n'
#define se second
#define int long long
#define getName(x) #x
#define vi std::vector<int>
#define isz(v) (int) v.size()
#define pii std::pair<int, int>
#define all(v) v.begin(), v.end()
#define loop cerr << "here" << endl;
#define breakLoop if(TIME > 1) break;
#define TIME 1.0 * clock() / CLOCKS_PER_SEC
using namespace std;
typedef long long ll;
template <typename T> void maximize(T &a, T b){if(a < b) a = b;}
template <typename T> void minimize(T &a, T b){if(a > b) a = b;}
int f1[20007][502], f2[20007][502];
int n, t, maxw, ans[200007], cnt;
pii a[20007];
struct info{
int L, R, maxw, idx;
};vector<info> q[200005];
bool check[20005];
void dnc(int L, int R){
int mid = L + R >> 1;
if(check[mid]) return;
for(int i = L - 1; i <= R + 1; i++)
for(int j = 0; j <= maxw; j++) f1[i][j] = f2[i][j] = 0;
check[mid] = 1;
for(int i = mid + 1; i <= R; i++){
for(int j = 1; j <= maxw; j++){
f2[i][j] = f2[i - 1][j];
if(j >= a[i].fi){
maximize(f2[i][j], f2[i - 1][j - a[i].fi] + a[i].se);
}
}
}
for(int i = mid; i >= L; i--){
for(int j = 1; j <= maxw; j++){
f1[i][j] = f1[i + 1][j];
if(j >= a[i].fi){
maximize(f1[i][j], (f1[i + 1][j - a[i].fi] + a[i].se) );
}
}
}
vector<info> left, right;
for(auto i : q[mid]){
if(i.L < L or i.R > R) continue;
if(i.R < mid) left.push_back(i);
if(i.L > mid) right.push_back(i);
if(i.L < L or i.R > R or i.R < mid or i.L > mid) continue;
cnt++;
for(int w = 0; w <= i.maxw; w++)
maximize(ans[i.idx], (f2[i.R][w] + f1[i.L][i.maxw - w]));
}
if(L == R or cnt == t) return;
dnc(L, mid);
dnc(mid + 1, R);
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
#define task "t"
if (fopen(task".inp", "r")){
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i].fi >> a[i].se;
}
cin >> t;
for(int i = 1; i <= t; i++){
int L, R, limW;
cin >> L >> R >> limW; maximize(maxw, limW);
int lo = 1, hi = n, pos;
while(lo <= hi){
int mid = lo + hi >> 1;
if(mid > R) hi = mid;
else if(mid < L) lo = mid + 1;
else{
pos = mid;
break;
}
}
q[pos].push_back({L, R, limW, i});
}
//for(int i = 0; i <= n + 1; i++) f1[i].assign(maxw + 2, 0), f2[i].assign(maxw + 2, 0);
dnc(1, n);
for(int i = 1; i <= t; i++) cout << ans[i] << endl;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBlbmRsICdcbicKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZ2V0TmFtZSh4KSAjeAojZGVmaW5lIHZpIHN0ZDo6dmVjdG9yPGludD4KI2RlZmluZSBpc3oodikgKGludCkgdi5zaXplKCkKI2RlZmluZSBwaWkgc3RkOjpwYWlyPGludCwgaW50PgojZGVmaW5lIGFsbCh2KSB2LmJlZ2luKCksIHYuZW5kKCkKI2RlZmluZSBsb29wIGNlcnIgPDwgImhlcmUiIDw8IGVuZGw7CiNkZWZpbmUgYnJlYWtMb29wIGlmKFRJTUUgPiAxKSBicmVhazsKI2RlZmluZSBUSU1FIDEuMCAqIGNsb2NrKCkgLyBDTE9DS1NfUEVSX1NFQwp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKCgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBtYXhpbWl6ZShUICZhLCBUIGIpe2lmKGEgPCBiKSBhID0gYjt9CnRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIG1pbmltaXplKFQgJmEsIFQgYil7aWYoYSA+IGIpIGEgPSBiO30KCmludCBmMVsyMDAwN11bNTAyXSwgZjJbMjAwMDddWzUwMl07CmludCBuLCB0LCBtYXh3LCBhbnNbMjAwMDA3XSwgY250OwpwaWkgYVsyMDAwN107CnN0cnVjdCBpbmZvewogICAgaW50IEwsIFIsIG1heHcsIGlkeDsKfTt2ZWN0b3I8aW5mbz4gcVsyMDAwMDVdOwpib29sIGNoZWNrWzIwMDA1XTsKCnZvaWQgZG5jKGludCBMLCBpbnQgUil7CiAgICBpbnQgbWlkID0gTCArIFIgPj4gMTsKICAgIGlmKGNoZWNrW21pZF0pIHJldHVybjsKICAgIGZvcihpbnQgaSA9IEwgLSAxOyBpIDw9IFIgKyAxOyBpKyspCiAgICAgICAgZm9yKGludCBqID0gMDsgaiA8PSBtYXh3OyBqKyspIGYxW2ldW2pdID0gZjJbaV1bal0gPSAwOwogICAgY2hlY2tbbWlkXSA9IDE7CiAgICAKICAgIGZvcihpbnQgaSA9IG1pZCArIDE7IGkgPD0gUjsgaSsrKXsKICAgICAgICBmb3IoaW50IGogPSAxOyBqIDw9IG1heHc7IGorKyl7CiAgICAgICAgICAgIGYyW2ldW2pdID0gZjJbaSAtIDFdW2pdOwogICAgICAgICAgICBpZihqID49IGFbaV0uZmkpewogICAgICAgICAgICAgICAgbWF4aW1pemUoZjJbaV1bal0sIGYyW2kgLSAxXVtqIC0gYVtpXS5maV0gKyBhW2ldLnNlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGZvcihpbnQgaSA9IG1pZDsgaSA+PSBMOyBpLS0pewogICAgICAgIGZvcihpbnQgaiA9IDE7IGogPD0gbWF4dzsgaisrKXsKICAgICAgICAgICAgZjFbaV1bal0gPSBmMVtpICsgMV1bal07CiAgICAgICAgICAgIGlmKGogPj0gYVtpXS5maSl7CiAgICAgICAgICAgICAgICBtYXhpbWl6ZShmMVtpXVtqXSwgKGYxW2kgKyAxXVtqIC0gYVtpXS5maV0gKyBhW2ldLnNlKSApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgdmVjdG9yPGluZm8+IGxlZnQsIHJpZ2h0OwoKICAgIGZvcihhdXRvIGkgOiBxW21pZF0pewogICAgICAgIGlmKGkuTCA8IEwgb3IgaS5SID4gUikgY29udGludWU7CiAgICAgICAgaWYoaS5SIDwgbWlkKSBsZWZ0LnB1c2hfYmFjayhpKTsKICAgICAgICBpZihpLkwgPiBtaWQpIHJpZ2h0LnB1c2hfYmFjayhpKTsKICAgICAgICBpZihpLkwgPCBMIG9yIGkuUiA+IFIgb3IgaS5SIDwgbWlkIG9yIGkuTCA+IG1pZCkgY29udGludWU7CiAgICAgICAgY250Kys7CiAgICAgICAgZm9yKGludCB3ID0gMDsgdyA8PSBpLm1heHc7IHcrKykKICAgICAgICAgICAgbWF4aW1pemUoYW5zW2kuaWR4XSwgKGYyW2kuUl1bd10gKyBmMVtpLkxdW2kubWF4dyAtIHddKSk7CiAgICB9CiAgICBpZihMID09IFIgb3IgY250ID09IHQpIHJldHVybjsKICAgIGRuYyhMLCBtaWQpOwogICAgZG5jKG1pZCArIDEsIFIpOwoKfQoKc2lnbmVkIG1haW4oKXsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICAjZGVmaW5lIHRhc2sgInQiCiAgICBpZiAoZm9wZW4odGFzayIuaW5wIiwgInIiKSl7CiAgICAgICAgZnJlb3Blbih0YXNrIi5pbnAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKHRhc2siLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KCiAgICBjaW4gPj4gbjsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICBjaW4gPj4gYVtpXS5maSA+PiBhW2ldLnNlOwogICAgfQogICAgY2luID4+IHQ7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IHQ7IGkrKyl7CiAgICAgICAgaW50IEwsIFIsIGxpbVc7CiAgICAgICAgY2luID4+IEwgPj4gUiA+PiBsaW1XOyBtYXhpbWl6ZShtYXh3LCBsaW1XKTsKICAgICAgICBpbnQgbG8gPSAxLCBoaSA9IG4sIHBvczsKICAgICAgICB3aGlsZShsbyA8PSBoaSl7CiAgICAgICAgICAgIGludCBtaWQgPSBsbyArIGhpID4+IDE7CiAgICAgICAgICAgIGlmKG1pZCA+IFIpIGhpID0gbWlkOwogICAgICAgICAgICBlbHNlIGlmKG1pZCA8IEwpIGxvID0gbWlkICsgMTsKICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgIHBvcyA9IG1pZDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHFbcG9zXS5wdXNoX2JhY2soe0wsIFIsIGxpbVcsIGl9KTsKICAgIH0KICAgIC8vZm9yKGludCBpID0gMDsgaSA8PSBuICsgMTsgaSsrKSBmMVtpXS5hc3NpZ24obWF4dyArIDIsIDApLCBmMltpXS5hc3NpZ24obWF4dyArIDIsIDApOwoKICAgIGRuYygxLCBuKTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gdDsgaSsrKSBjb3V0IDw8IGFuc1tpXSA8PCBlbmRsOwoKfQo=