#include <bits/stdc++.h>
using namespace std;
const int N=1005,M=3e5+5;
int n,m,c,ji;
long long f1[N][N],f2[N][N];
struct Node{
int id;
long long s;
}w[M],v[M];
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
for(int i=1;i<=n;i++){
int cw,cv,c;
cin >> cw >> cv >> c;
int now=1;
while(now<=c){
ji++;
w[ji].s=cw*now;
v[ji].s=cv*now;
w[ji].id=i;
v[ji].id=i;
c-=now;
now*=2;
}
if(c){
ji++;
w[ji].s=cw*c;
v[ji].s=cv*c;
w[ji].id=i;
v[ji].id=i;
}
}
cin >> m;
n=ji;
for(int i=1;i<=n;i++){
for(int j=0;j<=1000;j++) f1[i][j]=f1[i-1][j];
for(int j=1000;j>=w[i].s;j--)
f1[i][j]=max(f1[i][j],f1[i-1][j-w[i].s]+v[i].s);
}
for(int i=n;i>=1;i--){
for(int j=0;j<=1000;j++) f2[i][j]=f2[i+1][j];
for(int j=1000;j>=w[i].s;j--)
f2[i][j]=max(f2[i][j],f2[i+1][j-w[i].s]+v[i].s);
}
for(int k=1;k<=m;k++){
int cn,V;
cin >> cn >> V;
cn++;
long long ans=0;
int l=0,r=0;
while(w[l+1].id<cn && l<n) l++;
r=l;
while(w[r+1].id<=cn && r<n) r++;
for(int j=0;j<=V;j++) ans=max(ans,f1[l][j]+f2[r+1][V-j]);
cout << ans << "\n";
}
return 0;
}