/* █████╗ ██╗ ███╗ ███╗ █████╗ █████╗ ██████╗ ███╗ ███╗██╗ ██╗██████╗
██╔══██╗██║ ████╗ ████║██╔══██╗██╔══██╗██╔══██╗████╗ ████║██║ ██║██╔══██╗
███████║██║ ██╔████╔██║███████║███████║██████╔╝██╔████╔██║██║ ██║██║ ██║
██╔══██║██║ ██║╚██╔╝██║██╔══██║██╔══██║██╔══██╗██║╚██╔╝██║██║ ██║██║ ██║
██║ ██║███████╗██║ ╚═╝ ██║██║ ██║██║ ██║██║ ██║██║ ╚═╝ ██║╚██████╔╝██████╔╝
╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝
*/
#include <bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ll long long
#define ull unsigned long long
#define ld long double
#define str string
#define ch char
#define db double
#define pb push_back
#define ff first
#define ss second
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define YES cout<<"YES\n";
#define NO cout<<"NO\n";
#define Bob cout<<"Bob\n";
#define Alice cout<<"Alice\n";
#define ordered_set tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update>
const ll INF = 10000000000;
void solve(){
ll n,q;
cin>>n>>q;
vector<pair<ll,ll>>v;
for(int i = 0;i<n;i++){
ll a,b;
cin>>a>>b;
v.pb({a,b});
}
while(q--){
ll ah,ahh;
cin>>ah>>ahh;
ll su = ahh;
ll diametr = v[ah-1].ff;
su-=v[ah-1].ss;
if(su<=0){
cout<<ah<<"\n";
continue;
}
ll j = ah;
ll ahhh = -1;
while(j<n){
if(v[j].ff>diametr){
su-=v[j].ss;
diametr = v[j].ff;
ahhh = j;
}
if(su<=0){
break;
}
j++;
}
if(su>0){
cout<<0<<"\n";
continue;
}
else{
cout<<ahhh+1<<"\n";
}
}
}
signed main(){
ll t=1;
//cin>>t;
while(t--){
solve();
}
return 0;
}