#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,q,d[100010],c[100010],r[100010][20],f[100010][20],g[100010][20],l[100010];
ll q_max(ll a,ll b){
ll x=l[b-a+1];
return max(r[a][x],r[b-(1<<x)+1][x]);
}
int main(){
cin>>n>>q;
for(ll i=1;i<=n;i++){
cin>>d[i]>>c[i];
}
for(ll i=2;i<=n;i++){
l[i]=l[i>>1]+1;
}
for(ll i=1;i<=n;i++){
r[i][0]=d[i];
}
for(ll j=1;(1<<j)<=n;j++){
for(ll i=1;i<=n-(1<<j);i++){
r[i][j]=max(r[i][j-1],r[i+(1<<(j-1))][j-1]);
}
c[n+1]=100000000;
}
for(ll i=1;i<n;i++){
ll l1=i+1,r1=n+1,mid;
while(l1<r1){
mid=(l1+r1)>>1;
if(q_max(i+1,mid)<=d[i]){
l1=mid+1;
}else{
r1=mid;
}
}
f[i][0]=l1;
g[i][0]=c[f[i][0]];
}
f[n][0]=n+1;
g[n][0]=c[f[n][0]];
for(ll i=1;i<=16;i++){
for(ll j=1;j<=n;j++){
f[j][i]=f[f[j][i-1]][i-1];
g[j][i]=g[j][i-1]+g[f[i][i-1]][i-1];
}
}
while(q--){
ll r2,v;
cin>>r2>>v;
if(v>c[r2]){
v-=c[r2];
for(ll i=16;i>=0;i--){
if(v>g[r2][i]){
v-=g[r2][i];
r2=f[r2][i];
}
r2=f[r2][0];
}
if(r2==n+1){
r2=0;
}
}
cout<<r2<<endl;
}
return 0;
}