#include <bits/stdc++.h>
using namespace std;
#define int long long
const int INF = 1e18;
int n,d;
int c[300005];
int prefr[300005];
int rez[300005], qle[300005], qri[300005];
vector<int> qrys_ofri[300005];
int val[300005];
signed main()
{
ios_base::sync_with_stdio(0);cin.tie(0);
cin>>n>>d;
for(int i=1;i<=n;i++)
{
cin>>c[i];
prefr[i] = prefr[i-1] + ((c[i] - c[i-1]) % d + d) % d;
val[i] = c[i] - prefr[i];
//cerr<<i<<" "<<prefr[i]<<" prefr\n";
//cerr<<i<<" "<<val[i]<<" val\n";
}
int q;
cin>>q;
for(int i=1;i<=q;i++)
{
cin>>qle[i]>>qri[i];
qrys_ofri[qri[i]].push_back(i);
}
for(int ri=1;ri<=n;ri++)
{
for(int qid:qrys_ofri[ri])
{
int le = qle[qid];
int mnm = INF, sum = 0, tot = 0;
int dif = prefr[le] - c[le] % d;
//cout<<dif<<" dif\n";
//for(int i=le;i<=ri;i++) cout<<val[i] + dif<<" ";cout<<" val + dif\n";
for(int i=ri;i>=le;i--)
{
mnm = min(mnm, val[i] + dif);
sum += mnm;
tot += val[i] + dif;
}
if(mnm < 0)
{
rez[qid] = -1;
continue;
}
assert((tot - sum) % d == 0);
rez[qid] = (tot - sum) / d;
}
}
for(int i=1;i<=q;i++)
cout<<rez[i]<<"\n";
return 0;
}