#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
#define vc vector
#define st first
#define nd second
#define all(a) a.begin(), a.end()
#define sz(a) (ll)a.size()
#define pub push_back
#define pob pop_back
const ll INF = 1e18;
ll f(ll x, ll mod) {
x %= mod;
if (x < 0)
x += mod;
return x;
}
ll query(vc<ll> &a, ll d) {
ll prv = 0;
ll s = 0;
ll n = sz(a);
for (ll i = 0; i < n; i++) {
s += f(a[i] - prv, d);
prv = a[i];
a[i] -= s;
if (a[i] < 0)
return -1;
}
ll m = INF;
ll ret = 0;
for (ll i = n - 1; i >= 0; i--) {
m = min(m, a[i]);
ret += (a[i] - m) / d;
}
return ret;
}
void program() {
ll n, d;
cin >> n >> d;
vc<ll> a(n);
for (ll &ai : a)
cin >> ai;
ll q;
cin >> q;
while (q--) {
ll l, r;
cin >> l >> r;
l--, r--;
vc<ll> b(a.begin() + l, a.begin() + r + 1);
cout << query(b, d) << "\n";
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
program();
return 0;
}