#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
const long long MOD = 1000000007LL;
template <class T>
inline bool chmax(T &a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
inline bool chmin(T &a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
int mov[101010][50];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int N;
  cin >> N;
  vector<long long> x(N);
  for (int i = 0; i < (N); ++i) cin >> x[i];
  long long L;
  cin >> L;
  for (int i = 0; i < (N - 1); ++i) {
    int k = upper_bound((x).begin(), (x).end(), x[i] + L) - x.begin();
    mov[i][0] = k - 1;
  }
  mov[N - 1][0] = N;
  for (int k = 0; k < (40); ++k) {
    for (int i = 0; i < (N); ++i) {
      mov[i][k + 1] = mov[i][k] == N ? N : mov[mov[i][k]][k];
    }
  }
  int Q;
  cin >> Q;
  while (Q--) {
    int a, b;
    cin >> a >> b;
    --a;
    --b;
    if (a > b) swap(a, b);
    int ans = 0;
    int cur = a;
    while (cur < b) {
      for (int k = 40; k >= 0; --k) {
        if (mov[cur][k] <= b) {
          ans += 1 << k;
          cur = mov[cur][k];
          break;
        }
      }
    }
    cout << ans << '\n';
  }
}
