#include<cstdio>
#include<algorithm>
#define N 100005
using namespace std;
int f[N][35];//2的30次方 
int a[N];
int n,wl,jd;
char z;
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	scanf("%d",&a[i]);
	scanf("%d%d",&wl,&jd);
	for(int i=1;i<=n;i++)
	{
        int nowd = (int)(upper_bound(a,a+n, a[i]+wl)-a-1);
		if(a[i]+wl>=a[n])//过了这个点 
		f[i][0]=n;
		else
		f[i][0]=nowd;
	}
	for(int j=1;j<=30;j++)
	for(int i=1;i<=n;i++)
	f[i][j]=f[f[i][j-1]][j-1];
	for(int q=0;q<jd;q++)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		if(x>y)
		swap(x,y);
		int ans=0,cur=x;
		for(int i=30;i>=0;i--)
		{
			if(f[cur][i]<y)
			{
			ans+=(1<<i);
			cur=f[cur][i];
			}
		}
		printf("%d\n",ans+1);
	}
}