#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  cin >> n;
  vector<int> x(n);
  for (int i = 0; i < n; ++i) cin >> x[i];
  int l;
  cin >> l;
  vector<vector<int>> dpL(n, vector<int>(16));
  vector<vector<int>> dpR(n, vector<int>(16));
  for (int i = 0; i < n; ++i) {
    dpL[i][0] = lower_bound(x.begin(), x.end(), x[i] - l) - x.begin();
    dpR[i][0] = upper_bound(x.begin(), x.end(), x[i] + l) - x.begin() - 1;
  }
  for (int k = 0; k < 15; ++k) {
    for (int i = 0; i < n; ++i) {
      dpL[i][k + 1] = dpL[dpL[i][k]][k];
      dpR[i][k + 1] = dpR[dpR[i][k]][k];
    }
  }
  int q;
  cin >> q;
  while (q--) {
    int a, b;
    cin >> a >> b;
    --a;
    --b;
    int ans = 0;
    if (a < b) {
      int now = a;
      while (now < b) {
        int k =
            lower_bound(dpR[now].begin(), dpR[now].end(), b) - dpR[now].begin();
        now = dpR[now][k];
        ans += pow(2, k);
      }
    } else {
      int now = a;
      while (b < now) {
        int k =
            dpL[now].end() - upper_bound(dpL[now].end(), dpL[now].begin(), b);
        now = dpL[now][k];
        ans += pow(2, k);
      }
    }
    cout << ans << '\n';
  }
  return 0;
}
