#include<bits/stdc++.h>
#define int long long
using namespace std;
const int kmaxn=1e5+10,kl=31,Ma=INT_MAX*3;
int n,h[kmaxn],A[kmaxn],B[kmaxn],anr;
struct node{
int Asum,Bsum,to;
}w[kmaxn][kl][2];
map<int,int>to;
set<int>lp,rp;
int pi[5];
int nn=0,Aan[kmaxn],Ban[kmaxn];
bool cmp(int x,int y){
return (abs(h[nn]-x)==abs(h[nn]-y)?x<y:abs(h[nn]-x)<abs(h[nn]-y));
}
signed main(){
cin>>n;
to[-Ma]=0;
to[-Ma-1]=0;
to[Ma]=0;
to[Ma+1]=0;
h[0]=Ma;
lp.insert(Ma);
lp.insert(Ma+1);
rp.insert(Ma);
rp.insert(Ma-1);
for(int i=1;i<=n;i++){
cin>>h[i];
to[h[i]]=i;
}
for(int i=n;i>=1;i--){
lp.insert(h[i]);
rp.insert(-h[i]);
nn=i;
pi[1]=*lp.upper_bound(h[i]);
pi[2]=*lp.upper_bound(pi[1]);
pi[3]=*rp.upper_bound(-h[i])*-1;
pi[4]=*rp.upper_bound(-pi[3])*-1;
sort(pi+1,pi+5,cmp);
if(to[pi[1]]==0){
w[i][0][1].to=0;
}else{
w[i][0][1].to=to[pi[1]];
w[i][0][1].Bsum=abs(pi[1]-h[i]);
}
if(to[pi[2]]==0){
w[i][0][0].to=0;
}else{
w[i][0][0].to=to[pi[2]];
w[i][0][0].Asum=abs(pi[2]-h[i]);
}
}
for(int i=1;i<kl;i++){
if(i>1){
for(int j=1;j<=n;j++){
w[j][i][1].to=w[w[j][i-1][1].to][i-1][1].to;
w[j][i][1].Asum=w[j][i-1][1].Asum+w[w[j][i-1][1].to][i-1][1].Asum;
w[j][i][1].Bsum=w[j][i-1][1].Bsum+w[w[j][i-1][1].to][i-1][1].Bsum;
w[j][i][0].to=w[w[j][i-1][0].to][i-1][0].to;
w[j][i][0].Asum=w[j][i-1][0].Asum+w[w[j][i-1][0].to][i-1][0].Asum;
w[j][i][0].Bsum=w[j][i-1][0].Bsum+w[w[j][i-1][0].to][i-1][0].Bsum;
}
}
for(int j=1;j<=n;j++){
w[j][i][1].to=w[w[j][i-1][1].to][i-1][0].to;
w[j][i][1].Asum=w[j][i-1][1].Asum+w[w[j][i-1][1].to][i-1][0].Asum;
w[j][i][1].Bsum=w[j][i-1][1].Bsum+w[w[j][i-1][1].to][i-1][0].Bsum;
w[j][i][0].to=w[w[j][i-1][0].to][i-1][1].to;
w[j][i][0].Asum=w[j][i-1][0].Asum+w[w[j][i-1][0].to][i-1][1].Asum;
w[j][i][0].Bsum=w[j][i-1][0].Bsum+w[w[j][i-1][0].to][i-1][1].Bsum;
}
}
int x;
cin>>x;
anr=1;
for(int i=1;i<=n;i++){
int now=i,A=0,B=0;
now=i,A=0,B=0;
int qp=0;
for(int j=kl-1;j>=0;j--){
if(w[now][j][qp].Asum+w[now][j][qp].Bsum+A+B<=x&&w[now][j][qp].to!=0){
A+=w[now][j][qp].Asum;
B+=w[now][j][qp].Bsum;
now=w[now][j][qp].to;
}
}
Aan[i]=A;
Ban[i]=B;
if(Ban[i]==0){
Aan[i]=Ma/3;
}
if((Aan[anr]*Ban[i]==Aan[i]*Ban[anr]&&h[i]>h[anr])||(Aan[anr]*Ban[i]>Aan[i]*Ban[anr])){
anr=i;
}
}
cout<<anr<<endl;
int q;
cin>>q;
while(q--){
int y;
cin>>y>>x;;
for(int i=y;i<=y;i++){
int now=i,A=0,B=0;
now=i,A=0,B=0;
int qp=0;
for(int j=kl-1;j>=0;j--){
if(w[now][j][qp].Asum+w[now][j][qp].Bsum+A+B<=x&&w[now][j][qp].to!=0){
A+=w[now][j][qp].Asum;
B+=w[now][j][qp].Bsum;
now=w[now][j][qp].to;
}
}
cout<<A<<" "<<B<<endl;
}
}
return 0;
}