#include <bits/stdc++.h>
using namespace std;
template <class T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return 1;
  } else {
    return 0;
  }
}
template <class T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return 1;
  } else {
    return 0;
  }
}
template <class T>
inline T GCD(T a, T b) {
  T c;
  while (b != 0) {
    c = a % b;
    a = b;
    b = c;
  }
  return a;
}
template <class T>
inline T LCM(T a, T b) {
  return a * b / GCD(a, b);
}
int main() {
  long long n, l, q;
  long long x[100010];
  cin >> n;
  vector<long long> v;
  v.push_back(-1);
  for (int i = 0; i < (n); i++) {
    cin >> x[i];
    v.push_back(x[i]);
  }
  cin >> l >> q;
  v.push_back(10000000000000);
  long long p[100010][20];
  for (int i = 0; i < (n); i++) {
    if (i == n - 1) {
      p[i][0] = n;
      break;
    }
    long long a = upper_bound((v).begin(), (v).end(), x[i] + l) - v.begin();
    p[i][0] = a - 2;
  }
  p[n][0] = n;
  for (int i = 1; i <= 19; i++) {
    for (int j = 0; j < (n + 1); j++) {
      p[j][i] = p[p[j][i - 1]][i - 1];
    }
  }
  for (int i = 0; i < (q); i++) {
    long long a, b;
    cin >> a >> b;
    a--;
    b--;
    if (a > b) swap(a, b);
    long long ans = 0;
    for (int i = 19; i >= 0; i--) {
      if (p[a][i] <= b) {
        ans += 1 << i;
        a = p[a][i];
      }
    }
    cout << ans << endl;
  }
}
