#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#include<algorithm>#define ll long longusingnamespacestd;
constint maxn=100005,mx=90000;
struct code{
int a,b,c;
}a[maxn],b[maxn];
ll n,m,i,t,j,k,l,r,mid,f[mx+5],ans[maxn],g[mx+5];
bool cmp(code x,code y){
return x.c<y.c;
}
int main(){
freopen("market.in","r",stdin);freopen("market.out","w",stdout);
//freopen("data.in","r",stdin);freopen("data.out","w",stdout);scanf("%lld%lld",&n,&m);
for (i=1;i<=n;i++)
scanf("%lld%lld%lld",&a[i].a,&a[i].b,&a[i].c);
sort(a+1,a+n+1,cmp);
for (i=1;i<=m;i++)
scanf("%lld%lld",&b[i].c,&b[i].a),b[i].b=i;
sort(b+1,b+m+1,cmp);j=1;
memset(f,127,sizeof(f));f[0]=0;memset(g,127,sizeof(g));
for (i=1;i<=m;i++){
while (a[j].c<=b[i].c && j<=n){
for (k=mx-a[j].b;k>=0;k--)
if (f[k]>=0)f[k+a[j].b]=min(f[k+a[j].b],f[k]+a[j].a);
for (k=mx;k>=0;k--)
g[k]=min(g[k+1],f[k]);
j++;
}
l=0;
r=mx;
while (l<r){
mid=(l+r+1)/2;
if (g[mid]>b[i].a) r=mid-1;
else l=mid;
}
ans[b[i].b]=l;
}
for (i=1;i<=m;i++)
printf("%lld\n",ans[i]);
}