#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 7;
const int LOGN = 20;
const int INF = 2e9 + 7;
int n;
int a[N];
int L, Q;
int nxt[LOGN][N];
void ini() {
  for (int i = 0; i < int(n); i++) nxt[0][i] = i;
  a[n] = a[n - 1] + L;
  for (int i = 0; i < int(n); i++) {
    nxt[1][i] = upper_bound(a + i + 1, a + n, a[i] + L) - a - 1;
  }
  for (int i = 2; i < int(LOGN); i++) {
    for (int j = 0; j < int(n); j++) {
      nxt[i][j] = nxt[i - 1][nxt[i - 1][j]];
    }
  }
}
int query(int l, int r) {
  int res = 0;
  for (int i = LOGN - 1; i >= int(0); i--) {
    if (nxt[i][l] < r) {
      l = nxt[i][l];
      res += i;
    }
  }
  return res + 1;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < int(n); i++) scanf("%d", &a[i]);
  scanf("%d%d", &L, &Q);
  ini();
  while (Q--) {
    int l, r;
    scanf("%d%d", &l, &r);
    if (l > r) swap(l, r);
    l--, r--;
    printf("%d\n", query(l, r));
  }
  return 0;
}
