#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,m,u,v,ans,maxx,sec,sb[100010],lll;
struct node{
ll x,t,id;
}ed[100010],edge[100010];
bool cmp(node l,node r){
return l.t<r.t;
}
ll check(ll a){
ll l=0,r=n+1;
while(l!=r-1){
ll mid=(l+r)>>1;
if(ed[mid].t<a){
l=mid;
}else{
r=mid;
}
}
return l;
}
int main(){
cin>>n>>m;
for(ll i=1;i<=n;i++){
cin>>ed[i].x>>ed[i].t;
ed[i].id=i;
}
sort(ed+1,ed+1+n,cmp);
for(ll i=1;i<=n;i++){
sb[ed[i].id]=i;
}
maxx=-1;
for(ll i=1;i<n;i++){
if(maxx<=(abs(ed[i].x-ed[i+1].x))/(abs(ed[i].t-ed[i+1].t))){
lll=i;
sec=maxx;
maxx=(abs(ed[i].x-ed[i+1].x))/(abs(ed[i].t-ed[i+1].t));
}
}
ll nb=sec;
for(ll i=1;i<=m;i++){
cin>>u>>v;
sec=nb;
ll a=abs(ed[sb[u]-1].x-ed[sb[u]+1].x);
ll b=abs(ed[sb[u]-1].t-ed[sb[u]+1].t);
if(b!=0)sec=max(sec,a/b);
ll l=check(v),r=l+1;
a=abs(ed[l].x-ed[sb[u]].x);
b=abs(ed[l].t-v);
if(b!=0)sec=max(sec,a/b);
a=abs(ed[r].x-ed[sb[u]].x);
b=abs(ed[r].t-v);
if(b!=0)sec=max(sec,a/b);
a=abs(ed[sb[u]-1].x-ed[sb[u]].x);
b=abs(ed[sb[u]-1].t-ed[sb[u]].t);
if(b!=0&&maxx==a/b){
cout<<sec<<endl;
continue;
}
a=abs(ed[sb[u]+1].x-ed[sb[u]].x);
b=abs(ed[sb[u]+1].t-ed[sb[u]].t);
if(b!=0&&maxx==a/b){
cout<<sec<<endl;
continue;
}
cout<<max(sec,maxx)<<endl;
}
return 0;
}