#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
const long long MOD = 1e9 + 7;
double EPS = 1e-8;
const int MAX_N = 1e5 + 10;
vector<int> d[MAX_N];
int main() {
  int n;
  cin >> n;
  vector<int> x(n);
  for (int i = (0); i < (int)(n); i++) cin >> x[i];
  int l;
  cin >> l;
  for (int i = (0); i < (int)(n); i++) d[i].resize(31);
  for (int i = (0); i < (int)(n); i++) {
    d[i][0] = upper_bound(x.begin(), x.end(), x[i] + l) - x.begin();
    d[i][0]--;
  }
  for (int i = (0); i < (int)(30); i++) {
    for (int j = (0); j < (int)(n); j++) d[j][i + 1] = d[d[j][i]][i];
  }
  int q;
  cin >> q;
  for (int i = (0); i < (int)(q); i++) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    if (a > b) swap(a, b);
    long long ans = 0LL, nxt = a;
    while (1) {
      if (nxt >= b) break;
      if (d[nxt][0] >= b) {
        ans += 1;
        break;
      }
      auto it = lower_bound(d[nxt].begin(), d[nxt].end(), b - 1);
      ans += (1LL << (int)(it - d[nxt].begin()));
      nxt = *it;
    }
    cout << ans << endl;
  }
  return 0;
}
