#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll M=1e5+5;
vector<ll>d,c;
ll p[20][M][2];
ll get(ll a,ll b)
{
if(c[a]>=b)
return a;
ll r=c[a];
for(int i=19;i>=0;i--)
{
if(p[i][a][1]+r<b)
{
r+=p[i][a][1];
a=p[i][a][0];
}
}
return p[0][a][0];
}
int main()
{
ll n,q;
cin>>n>>q;
d.resize(n+1);
c.resize(n+1);
for(int i=1;i<=n;i++)
{
cin>>d[i]>>c[i];
}
stack<ll>s;
for(int i=n;i>=1;i--)
{
while(!s.empty() && d[s.top()]<=d[i])
s.pop();
if(s.empty())
{
p[0][i][0]=0;
p[0][i][1]=0;
}
else
{
p[0][i][0]=s.top();
p[0][i][1]=c[s.top()];
}
s.push(i);
}
for(int i=1;i<20;i++)
{
for(int j=1;j<=n;j++)
{
p[i][j][0]=p[i-1][p[i-1][j][0]][0];
p[i][j][1]=p[i-1][p[i-1][j][0]][1]+p[i-1][j][1];
}
}
while(q--)
{
ll a,b;
cin>>a>>b;
cout<<get(a,b)<<endl;
}
}