#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int N=1e5+10;
const LL INF=1e9+10;
int n,m,s[N],f[20][N][5];
LL xo,h[N],x[N],da[20][N][5],db[20][N][5];
struct qwe{
int id;
LL h;
friend bool operator <(qwe a,qwe b){
return a.h<b.h;
}
};
multiset<qwe> q;
void scan(){
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%lld",&h[i]);
scanf("%lld",&xo);
scanf("%d",&m);
for(int i=1;i<=m;i++) scanf("%d%lld",&s[i],&x[i]);
}
void yucl(){
h[0]=INF,h[n+1]=-INF;
qwe sta;
sta.id=0;sta.h=INF;
q.insert(sta),q.insert(sta);
sta.id=n+1;sta.h=-INF;
q.insert(sta);q.insert(sta);
for(int i=n;i;i--){
int ga,gb;
qwe now;
now.id=i;now.h=h[i];
q.insert(now);
set<qwe>::iterator it=q.lower_bound(now);
it--;
int lt=(*it).id,lh=(*it).h;
it++,it++;
int ne=(*it).id,nh=(*it).h;
it--;
if(abs(nh-h[i])>=abs(h[i]-lh)){
gb=lt;
it--,it--;
if(abs(nh-h[i])>=abs(h[i]-(*it).h)) ga=(*it).id;
else ga=ne;
}
else{
gb=ne;
it++,it++;
if(abs((*it).h-h[i])>=abs(h[i]-lh)) ga=lt;
else ga=(*it).id;
}
f[0][i][0]=ga,f[0][i][1]=gb;
da[0][i][0]=abs(h[i]-h[ga]);
db[0][i][1]=abs(h[i]-h[gb]);
}
}
void DP(){
for(int i=1;i<=18;i++)
for(int j=1;j<=n;j++)
for(int k=0;k<2;k++)
if(i==1){
f[i][j][k]=f[i-1][f[i-1][j][k]][1-k];
da[i][j][k]=da[i-1][j][k]+da[i-1][f[i-1][j][k]][1-k];
db[i][j][k]=db[i-1][j][k]+db[i-1][f[i-1][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];
}
}
void query(int Q,LL S){
LL la=0,lb=0;
for(int i=18;i>=0;i--){
if(f[i][Q][0]&&la+lb+da[i][Q][0]+db[i][Q][0]<=S){
Q=f[i][Q][0];
la+=da[i][Q][0];
lb+=db[i][Q][0];
}
}
printf("%lld %lld\n",la,lb);
}
void que1(){
int id=0;
double an=(double)(1000000010);
for(int k=1;k<=n;k++){
LL la=0,lb=0;
int Q=k;
for(int i=18;i>=0;i--){
if(f[i][Q][0]&&la+lb+da[i][Q][0]+db[i][Q][0]<=xo){
Q=f[i][Q][0];
la+=da[i][Q][0];
lb+=db[i][Q][0];
}
}
if((double)la/(double)lb<an) an=(double)la/(double)lb,id=k,cout<<an<<endl;
}
printf("%d\n",id);
}
void que2(){
for(int i=1;i<=m;i++)
query(s[i],x[i]);
}
int main(){
scan();
yucl();
DP();
que1();
que2();
return 0;
}