#include<bits/stdc++.h>
using namespace std;
const int N=510;
int cst[N], fr[N], be[N];
struct Node{
int bea;
int fre;
}dp[N];
int main(){
int n, q;
scanf("%d %d", &n, &q);
for(int i=1;i<=n;i++){
scanf("%d %d %d", &cst[i], &fr[i], &be[i]);
}
while(q){
q--;
int c, f;
scanf("%d %d", &c, &f);
//结构体初始化
for(int i=0;i<=c;i++){
dp[i].bea=0;
dp[i].fre=0;
}
int ans=0;
for(int i=1;i<=n;i++){
for(int j=c;j>=cst[i];j--){
if(dp[j].bea<(dp[j-cst[i]].bea+be[i])){
dp[j].bea=dp[j-cst[i]].bea+be[i];
dp[j].fre=dp[j-cst[i]].fre+fr[i];
}
if(dp[j].fre>=f) ans=max(ans, dp[j].bea);
}
}
printf("%d\n", ans);
}
return 0;
}