#include <bits/stdc++.h>
#define ll int
#define ff first
#define ss second
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define ertunt return
using namespace std;
ll mod = 1e9+7;
vector<ll> adj[600007];
vector<ll>vis(200005);
vector<ll> f(600005), inv(600005);
ll modpow(ll a, ll b){
ll r = 1;
while(b){
if(b & 1){
r *= a;
r %= mod;
}
a *= a;
a %= mod;
b >>= 1;
}
ertunt r;
}
ll nCk(ll n, ll k){
if(k < 0 || k > n) ertunt 0;
ertunt f[n] * inv[k] % mod * inv[n - k] % mod;
}
int main(){
ll n,q;
cin >> n >> q;
vector<ll>d(n+2),c(n+2);
d[0] = 1e9;
c[0] = 1e9;
for(ll i = 1; i <= n; i++){
cin >> d[i] >> c[i];
}
stack<ll>s;
s.push(0);
vector<ll>parent(n+2);
for(ll i = n; i >= 1; i--){
while(d[i] >= d[s.top()]){
s.pop();
}
parent[i] = s.top();
s.push(i);
}
ll lg = 21;
vector<vector<ll>>up(n+2,vector<ll>(lg+1));
vector<vector<ll>>sum(n+2,vector<ll>(lg+1));
for(ll i = 1; i <= n; i++){
up[i][0] = parent[i];
sum[i][0] = c[parent[i]];
}
for(ll k = 1; k <= lg; k++){
for(ll i = 1; i <= n; i++){
up[i][k] = up[up[i][k-1]][k-1];
sum[i][k] = sum[i][k-1] + sum[up[i][k-1]][k-1];
}
}
while(q--){
ll r,v;
cin >> r >> v;
if(v <= c[r]){
cout << r << '\n';
continue;
}
v -= c[r];
for(ll i = lg; i >= 0; i--){
if(sum[r][i] < v){
v -= sum[r][i];
r = up[r][i];
}
}
cout << up[r][0] << '\n';
}
}