rt
# include <bits/stdc++.h>
# define int long long
# define PII pair <int ,int>
using namespace std;
inline int read(){int s = 0 , w = 0;char c = getchar();while(!isdigit(c)){w |= (c == '-');c = getchar();}while(isdigit(c)){s = (s << 1) + (s << 3) + (c ^ 48);c = getchar();}return w ? -s : s;}
inline void write(int x){if(x < 0) putchar('-') , x = -x;if(x > 9) write(x / 10);putchar(x % 10 | 48);}
inline void writesp(int x){write(x) , putchar(' ');}
inline void writeln(int x){write(x) , putchar('\n');}
const int N = 1e5 + 10;
int n ,Q ,d[N] ,c[N] ,nxt[N] ,fnxt[N][21] ,f[N][21];
stack < PII > sta;
signed main (){
n = read () ,Q = read ();
// memset (fnxt ,0x3f ,sizeof fnxt);
memset (f ,0x3f ,sizeof f);
int inf = fnxt[0][0];
//d[n + 1] = c[n + 1] = inf;
for (int i = 1 ; i <= n ; i ++){
d[i] = read () ,c[i] = read ();
while (!sta.empty () && d[i] > sta.top().first){
fnxt[sta.top().second][0] = i;
sta.pop ();
}
sta.push (make_pair (d[i] ,i));
//d[i] 半径,c[i] 容量。
f[i][0] = c[i];
}
for (int j = 1 ; j <= 20 ; j ++)
for (int i = 1 ; i + (1 << j) - 1 <= n ; i ++){
fnxt[i][j] = fnxt[fnxt[i][j - 1]][j - 1];
f[i][j] = f[i][j - 1] + f[fnxt[i][j - 1]][j - 1];
}
while (Q --){
int r = read () ,v = read ();
for (int i = 20 ; i >= 0 ; i --)
if (f[r][i] < v) v -= f[r][i] ,r = fnxt[r][i] /*,writesp (v) ,writesp (r) ,writeln (f[r][i])*/;
writeln (r);
}
return 0;
}