#include<bits/stdc++.h>
#define sc(n) scanf("%d",&n)
#define ps(n) printf("%d ",n)
#define pn(n) printf("%d\n",n)
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define ROF(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
const int N=500+7;
int n,m,co[N],fr[N],be[N],f[N][N],pre[N][N],upre[N][N];
int main(){
sc(n),sc(m);
FOR(i,1,n) sc(co[i]),sc(fr[i]),sc(be[i]);
FOR(i,0,500){
FOR(j,0,501){
f[i][j]=pre[i][j]=upre[i][j]=INT_MIN;
}
}
f[0][0]=0;
FOR(i,1,500){
ROF(j,500,co[i]){
ROF(k,501,501-fr[i]){
f[j][501]=max(f[j][501],f[j-co[i]][k]+be[i]);
}
ROF(k,500,fr[i]){
f[j][k]=max(f[j][k],f[j-co[i]][k-fr[i]]+be[i]);
}
}
}
FOR(i,0,500){
ROF(j,501,0){
upre[i][j]=max(f[i][j],upre[i][j+1]);
}
}
FOR(i,0,500){
ROF(j,501,0){
pre[i][j]=max(upre[i][j],pre[max(0,i-1)][j]);
}
}
while(m--){
ll x,y;
sc(x),sc(y);
pn(pre[x][y]);
}
return 0;
}