#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
const long long LINF = 1LL << 62;
long long dp[31][100000];
map<int, long long> ma;
long long dfs(int a, int b, long long sum) {
  for (int k = 0; k < 31; k++) {
    if (b == dp[k][a]) {
      return sum + (1 << k);
    }
    if (b < dp[k][a]) {
      if (k == 0) return sum + 1;
      return dfs(dp[k - 1][a], b, sum + (1 << k - 1));
    }
  }
  return 0;
}
int main() {
  int N;
  cin >> N;
  vector<long long> X;
  for (int i = 0; i < N; i++) {
    long long x;
    cin >> x;
    X.emplace_back(-x);
    ma[i] = x;
  }
  sort(X.begin(), X.end());
  long long L, Q;
  cin >> L >> Q;
  for (int i = 0; i < N; i++) {
    dp[0][i] = X.end() - lower_bound(X.begin(), X.end(), -(ma[i] + L)) - 1;
  }
  for (int k = 1; k < 31; k++) {
    for (int i = 0; i < N; i++) {
      dp[k][i] = dp[k - 1][dp[k - 1][i]];
    }
  }
  while (Q--) {
    int a, b;
    cin >> a >> b;
    a--, b--;
    if (a > b) swap(a, b);
    cout << dfs(a, b, 0) << endl;
  }
  return 0;
}
