#include <bits/stdc++.h>
using namespace std;
int ans[100000];
vector<pair<int, int>> query[100000];
vector<int> child[100000];
vector<int> par;
int N;
int x[100000];
int L, Q;
void dfs(int u) {
  for (auto p : query[u]) {
    ans[p.second] =
        par.end() -
        upper_bound(par.begin(), par.end(), p.first, greater<int>()) + 1;
  }
  par.push_back(u);
  for (int v : child[u]) {
    dfs(v);
  }
  par.pop_back();
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> N;
  for (int i = 0; i < (int)(N); i++) cin >> x[i];
  cin >> L >> Q;
  for (int i = 0; i < (int)(Q); i++) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    if (a > b) {
      a = N - a - 1;
      b = N - b - 1;
    }
    query[a].emplace_back(b, i);
  }
  for (int i = 0; i < (int)(N - 1); i++) {
    if (query[i].empty() && child[i].empty()) continue;
    int nxt = upper_bound(x, x + N, x[i] + L) - 1 - x;
    child[nxt].push_back(i);
  }
  dfs(N - 1);
  for (int i = 0; i < (int)(Q); i++) cout << ans[i] << endl;
  return 0;
}
