#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10,inf=1e5+5;
struct dates
{
int d=0;
int p,l;
bool operator<(const dates &t)const{
return d>t.d;
}
}date[N];
struct xdss
{
int l,r,lsum,rmbs;
}xds[N*32];
int root[N],idx;
void motify(int pre,int &rt,int l,int r,int pos,int val)
{
if(!rt) rt=++idx;
xds[rt].lsum=xds[pre].lsum+val;
xds[rt].rmbs=xds[pre].rmbs+val*pos;
if(l==r) return;
int mid=(l+r)>>1;
if(pos<=mid)
{
xds[rt].r=xds[pre].r;
motify(xds[pre].l,xds[rt].l,l,mid,pos,val);
}
else
{
xds[rt].l=xds[pre].l;
motify(xds[pre].r,xds[rt].r,mid+1,r,pos,val);
}
}
bool check(int rt,int l,int r,int rmbs,int lsum)
{
if(xds[rt].lsum<lsum) return false;
if(l==r)
{
rmbs-=l*lsum;
if(rmbs>=0) return true;
return false;
}
int zsum=xds[xds[rt].l].lsum;
int mid=l+r>>1;
if(lsum<=zsum) return check(xds[rt].l,l,mid,rmbs,lsum);
else return check(xds[rt].r,mid+1,r,rmbs-xds[xds[rt].l].rmbs,lsum-zsum);
}
void solve()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
int d,p,l;
cin>>d>>p>>l;
date[i]={d,p,l};
}
sort(date+1,date+1+n);
for(int i=1;i<=n;i++)
{
int d=date[i].d,p=date[i].p,l=date[i].l;
int pred=date[i-1].d;
motify(root[pred],root[d],1,inf,p,l);
}
while(m--)
{
int g,ll;
cin>>g>>ll;
int l=1,r=n;
while(l<r)
{
int mid=l+r>>1;
int d=date[mid].d;
if(check(root[d],1,inf,g,ll)) r=mid;
else l=mid+1;
}
int d=date[l].d;
if(check(root[d],1,inf,g,ll)) cout<<d<<'\n';
else cout<<-1<<'\n';
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr),cout.tie(nullptr);
int T=1;
while(T--){solve();}
return 0;
}