//#pragma GCC optimize("O3")
//#define _GLIBCXX_DEBUG
#include <bits/stdc++.h>
using namespace std;
// using ll = __int128;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
int main() {
ios_base::sync_with_stdio(false);
cout.tie(nullptr); cin.tie(nullptr);
ll n; cin >> n;
vector<ll> h(n, 0);
for (int i = 0; i < n; i++) cin >> h[i];
vector<vector<ll>> gr(n, vector<ll> (0, 0));
for (int i = 0; i < n; i++) {
ll up = -1e18;
ll down = 1;
for (int j = i + 1; j < n; j++) {
ll x = j - i;
ll y = h[j] - h[i];
if (y * down >= up * x) {
gr[i].push_back(j);
up = y;
down = x;
}
}
}
int q; cin >> q;
vector<ll> dist(n, 1e18);
for (int i = 0; i < q; i++) {
int l, r; cin >> l >> r; l--; r--;
fill(dist.begin(), dist.end(), 1e18);
dist[l] = 0;
for (int j = l; j < r; j++) {
if (dist[j] == 1e18) continue;
for (auto u : gr[j]) {
dist[u] = min(dist[u], dist[j] + 1);
}
}
cout << dist[r] << '\n';
}
}