#include<bits/stdc++.h>
using namespace std;
const int N=510;
int a[N],b[N],c[N];
struct Node{
int x,y;
}dp[N];
int main(){
int n,q;
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++){
scanf("%d%d%d",&a[i],&b[i],&c[i]);
}
while(q){
q--;
int q,f;
scanf("%d%d",&q,&f);
for(int i=0;i<=q;i++){
dp[i].x=0;
dp[i].y=0;
}
int ans=0;
for(int i=1;i<=n;i++){
for(int j=q;j>=a[i];j--){
if(dp[j].x<(dp[j-a[i]].x+c[i])){
dp[j].x=dp[j-a[i]].x+c[i];
dp[j].y=dp[j-a[i]].y+b[i];
}
if(dp[j].y>=f){
ans=max(ans,dp[j].x);
}
}
}
printf("%d\n",ans);
}
return 0;
}