#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read()
{
int res=0,f=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){res=(res<<1)+(res<<3)+(c^48);c=getchar();}
return res*f;
}
void write(int x)
{
if(x<0){x=-x;putchar('-');}
if(x>9)write(x/10);
putchar(x%10+'0');
}
//-------SegmentTreeBegin-------
namespace Elaina
{
struct node
{
int l,r,val,cnt;
}t[114514<<5];
int cnt,rt;
int insert(int x,int l,int r,int root,int v)
{
if(!root)
root=++cnt;
if(l==r)
{
t[root].val+=v*l;
t[root].cnt+=v;
return root;
}
int mid=l+r>>1;
if(x<=mid) t[root].l=insert(x,l,mid,t[root].l,v);
else t[root].r=insert(x,mid+1,r,t[root].r,v);
t[root].val=t[t[root].l].val+t[t[root].r].val;
t[root].cnt=t[t[root].l].cnt+t[t[root].r].cnt;
return root;
}
int query(int l,int r,int root,int k)
{
if(!root) return 1e18;
if(l==r)
return k*l;
int mid=l+r>>1;
if(t[t[root].l].cnt<k)
return t[t[root].l].val+query(mid+1,r,t[root].r,k-t[t[root].l].cnt);
return query(l,mid,t[root].l,k);
}
}
#define rt Elaina::rt
#define insert Elaina::insert
#define query Elaina::query
#define t Elaina::t
//--------SegmentTreeEnd--------
struct que
{
int d,p,l,id,op;
}q[114514<<1],tmpl[114514<<1],tmpr[114514<<1];
int cnt;
int n,m;
int ans[114514<<1];
void solve(int x,int y,int l,int r)
{
if(x>y) return;
if(l==r)
{
for(int i=x;i<=y;i++)
ans[q[i].id]=l;
return;
}
int mid=l+r>>1;
int cntl,cntr;
cntl=cntr=0;
for(int i=x;i<=y;i++)
if(q[i].op==1)
{
if(q[i].d>=mid)
{
tmpr[++cntr]=q[i];
rt=insert(q[i].p,1,1e18,rt,q[i].l);
}
else tmpl[++cntl]=q[i];
}
// cout<<x<<" "<<y<<" "<<mid<<endl;
// for(int i=x;i<=y;i++)
// cout<<q[i].d<<" "<<q[i].p<<" "<<q[i].l<<" "<<q[i].op<<" "<<q[i].id<<endl;
// cout<<t[rt].cnt<<endl<<endl;
for(int i=x;i<=y;i++)
if(q[i].op==2)
{
if(q[i].p<=t[rt].cnt&&query(1,1e18,rt,q[i].p)<=q[i].d)
{
q[i].d-=query(1,1e18,rt,q[i].p);
tmpr[++cntr]=q[i];
}
else
{
q[i].p-=t[rt].cnt;
tmpl[++cntl]=q[i];
}
}
for(int i=1;i<=cntl;i++)
q[x+i-1]=tmpl[i];
for(int i=1;i<=cntr;i++)
{
if(q[i].op==1)
rt=insert(q[i].p,1,1e18,rt,-q[i].l);
q[x+cntl+i-1]=tmpr[i];
}
solve(x,x+cntl-1,l,mid);
solve(x+cntl,y,mid+1,r);
}
signed main()
{
n=read(),m=read();
for(int i=1;i<=n;i++)
q[++cnt].d=read(),q[cnt].p=read(),q[cnt].l=read(),q[cnt].op=1;
for(int i=1;i<=m;i++)
q[++cnt].d=read(),q[cnt].p=read(),q[cnt].op=2,q[cnt].id=i,ans[i]=-1;
solve(1,cnt,1,1e18);
for(int i=1;i<=m;i++)
write(ans[i]),puts("");
}