#include <iostream>
#define N 100005
using namespace std;
int n,Q,c[N],d[N],s[N][20],log_2[N],r,v,to[N][20],io[N][20],ex;
void init(){
for(int i=2;i<=n;i++)log_2[i]=log_2[i/2]+1;
for(int i=1;i<=n+1;i++)s[i][0]=d[i];
for(int t=1;(1<<t)<=n;t++)
for(int i=1;i<=n-(1<<t)+1;i++)
s[i][t]=max(s[i][t-1],s[i+(1<<t-1)][t-1]);
}
int RMQ(int l,int r){
int p=log_2[r-l+1];
return max(s[l][p],s[1+r-(1<<p)][p]);
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
std::cin>>n>>Q;
for(int i=1;i<=n;i++)cin>>d[i]>>c[i];
io[n][0]=d[n+1]=c[n+1]=0x3f3f3f3f;
init();
for(int i=1;i<=n;i++){
int l=i+1,r=n+1,mid;
while (l<r){
mid=(l+r)/2;
if(RMQ(i+1,mid)>d[i])r=mid;
else l=mid+1;
}
to[i][0]=l;
io[i][0]=c[to[i][0]];
}
to[n][0]=n+1;
for(int t=1;t<=16;t++)
for(int i=1;i<=n;i++){
to[i][t]=to[to[i][t-1]][t-1];
io[i][t]=io[i][t-1]+io[to[i][t-1]][t-1];
}
while (Q--){
cin>>r>>v;
v-=c[r];
if(v>c[r]){
v-=c[r];
for(int t=16;t>=0;t--)
if(v>io[r][t]){v-=io[r][t];r=to[r][t];}
r=to[r][0];
}
cout<<r%(n+1)<<"\n";
}
return 0;
}