#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+5;
const int INF=1e9;
int nex[MAXN],A[MAXN],W[MAXN],fen[MAXN],val[MAXN],sp[MAXN][20],sum[MAXN][20];
int getlog(long long n) { return 63-__builtin_clzll(n); }
void update(int i,int n,int val) { for(;i<=n;i+=i&-i) fen[i]=min(fen[i],val); }
int get(int i) { int ans=INF;for(;i;i-=i&-i) ans=min(ans,fen[i]);return ans; }
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,q;
cin>>n>>q;
for(int i=1;i<=n;i++)
{
cin>>A[i]>>W[i];
val[i]=A[i];
}
sort(val+1,val+n+1);
for(int i=1;i<=n;i++) fen[i]=INF;
for(int i=n;i;i--)
{
A[i]=lower_bound(val+1,val+n+1,A[i])-val;
sp[i][0]=get(n-A[i]),sum[i][0]=W[i];
update(n-A[i]+1,n,i);
}
for(int j=1;(1<<j)<=n;j++) for(int i=1;i<=n;i++) if(sp[i][j-1]==INF) sp[i][j]=sp[i][j-1],sum[i][j]=sum[i][j-1];
else sp[i][j]=sp[sp[i][j-1]][j-1],sum[i][j]=sum[i][j-1]+sum[sp[i][j-1]][j-1];
while(q--)
{
int x,v;
cin>>x>>v;
for(int j=getlog(n);j+1;j--)
{
if(sum[x][j]<v) v-=sum[x][j],x=sp[x][j];
if(x==INF) break;
}
if(x==INF) cout<<"0\n";
else cout<<x<<"\n";
}
}