#include <bits/stdc++.h>
using namespace std;
long long INF = 1e9;
long long MOD = 1e9;
int N, a, L, b, Q;
vector<long long> V;
int dst[100100][18];
int query(int x, int y) {
  int ans = 0;
  for (int i = 17; i >= 0; --i) {
    if (dst[x][i] == -1 || dst[x][i] > y) continue;
    x = dst[x][i];
    ans += (1 << i);
    if (x == y) return ans;
  }
  return ans;
}
int main() {
  cin >> N;
  for (int i = 0; i < N; ++i) {
    cin >> a;
    V.push_back(a);
  }
  V.push_back(INF);
  cin >> L;
  memset(dst, -1, sizeof(dst));
  for (int i = 0; i < N; ++i) {
    int t = V[i] + L;
    int x = upper_bound(V.begin(), V.end(), t) - V.begin() - 1;
    if (i != x) dst[i][0] = x;
  }
  for (int i = 1; i < 18; ++i) {
    for (int j = 0; j < N; ++j) {
      if (dst[j][i - 1] != -1) dst[j][i] = dst[dst[j][i - 1]][i - 1];
    }
  }
  cin >> Q;
  while (Q--) {
    cin >> a >> b;
    --a;
    --b;
    if (a > b) swap(a, b);
    cout << query(a, b) << '\n';
  }
}
