rt
#include <set>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#define ll long long
#define maxn 100005
using namespace std;
int n,m,x0;
int la,lb,ri;
int h[maxn];
int s[maxn];
int x[maxn];
int f[20][maxn][3];
int da[20][maxn][3];
int db[20][maxn][3];
inline ll re(){
register ll k=0,f=1ll;
register char c=getchar();
while(!isdigit(c)){
if(c=='-') f=-1ll;
c=getchar();
}
while(isdigit(c)){
k=k*10ll+(c^48ll);
c=getchar();
}
return 1ll*k*f;
}
void wr(ll x){
if(x<0){
x=~x+1;
putchar('-');
}
if(x>9) wr(x/10ll);
putchar(x%10ll^48ll);
}
struct City{
int id,al;
friend bool operator <(City x,City y){
return x.al<y.al;
}
};
multiset<City> ms;
inline void init_(){
h[0]=2e9+1e8,h[n+1]=-2e9-1e8;
City st;
st.id=0,st.al=h[0];
ms.insert(st),ms.insert(st);
st.id=n+1,st.al=h[n+1];
ms.insert(st),ms.insert(st);
for(int i=n;i;--i){
int ga,gb;
City now;
now.id=i,now.al=h[i];
ms.insert(now);
multiset<City>::iterator p=ms.lower_bound(now); //指向now
--p; //前驱
int pr=(*p).id,ph=(*p).al;
++p,++p; //后继
int ne=(*p).id,nh=(*p).al;
--p; //now
if(abs(nh-h[i])>=abs(h[i]-ph)){
gb=pr;
--p,--p; //前驱的前驱
if(abs((*p).al-h[i])>=abs(nh-h[i]))
ga=ne;
else
ga=(*p).id;
}
else{
gb=ne;
++p,++p; //后继的后继
if(abs((*p).al-h[i])>=abs(ph-h[i]))
ga=pr;
else
ga=(*p).id;
}
f[0][i][0]=ga,f[0][i][1]=gb;
da[0][i][0]=abs(h[ga]-h[i]);
db[0][i][1]=abs(h[gb]-h[i]);
}
for(int i=1;i<=18;++i){
for(int j=1;j<=n;++j){
for(int k=0;k<=1;++k){
if(i==1){
f[1][j][k]=f[0][f[0][j][k]][1-k];
da[1][j][k]=da[0][j][k]+da[0][f[0][j][k]][1-k];
db[1][j][k]=db[0][j][k]+db[0][f[0][j][k]][1-k];
}
else{
f[i][j][k]=f[i-1][f[i-1][j][k]][k];
da[i][j][k]=da[i-1][j][k]+da[i-1][f[i-1][j][k]][k];
db[i][j][k]=db[i-1][j][k]+db[i-1][f[i-1][j][k]][k];
}
}
}
}
}
inline void calc(int s,int x){
int p=s;
la=lb=0;
for(int i=18;~i;--i){
if(f[i][p][0]&&la+lb+da[i][p][0]+db[i][p][0]<=x){
la+=da[i][p][0];
lb+=db[i][p][0];
p=f[i][p][0];
}
}
}
signed main(){
n=re();
for(int i=1;i<=n;++i) h[i]=re();
x0=re(),m=re();
for(int i=1;i<=m;++i) s[i]=re(),x[i]=re();
init_();
double ans=3e9,xw;
for(int i=1;i<=n;++i){
calc(i,x0);
xw=(double)la/(double)lb;
if(xw<ans){
ri=i;
ans=xw;
}
else if(xw==ans&&h[i]>h[ri]) ri=i;
}
wr(ri);
putchar('\n');
for(int i=1;i<=m;++i){
calc(s[i],x[i]);
wr(la),putchar(' '),wr(lb),putchar('\n');
}
return 0;
}