#include <bits/stdc++.h>
using namespace std;
vector<long long> getMinConnectionCost(vector<int>& warehouseCapacity, vector<vector<int>>& additionalHubs) {
int n = warehouseCapacity.size();
vector<long long> prefixSum(n + 1, 0);
for (int i = 0; i < n; ++i) {
prefixSum[i + 1] = prefixSum[i] + warehouseCapacity[i];
}
std::vector<long long> results;
for (const auto& query : additionalHubs) {
int hubA = query[0];
int hubB = query[1];
int ha = hubA - 1;
int hb = hubB - 1;
long long totalCost = 0;
if (ha > 0) {
long long cost1 = (long long)ha * warehouseCapacity[ha] - prefixSum[ha];
totalCost += cost1;
}
if (hb > ha + 1) {
long long count2 = hb - ha - 1;
long long sum_capacities2 = prefixSum[hb] - prefixSum[ha + 1];
long long cost2 = count2 * warehouseCapacity[hb] - sum_capacities2;
totalCost += cost2;
}
if (n - 1 > hb + 1) {
long long count3 = (n - 1) - (hb + 1); // Number of warehouses in range [hb+1, n-2]
long long sum_capacities3 = prefixSum[n - 1] - prefixSum[hb + 1];
long long cost3 = count3 * warehouseCapacity[n - 1] - sum_capacities3;
totalCost += cost3;
}
results.push_back(totalCost);
}
return results;
}
int main() {
// your code goes here
int n;
cin >> n;
vector<int> warehouseCapacity(n);
for (int i=0;i<n;i++) cin >> warehouseCapacity[i];
int m;
cin >> m;
vector<vector<int>> additionalHubs;
for (int i=0;i<m;i++) {
int x,y;
cin >> x >> y;
additionalHubs.push_back({x, y});
}
vector<long long> ans = getMinConnectionCost(warehouseCapacity, additionalHubs);
for(auto x: ans) {
cout << x << " ";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKdmVjdG9yPGxvbmcgbG9uZz4gZ2V0TWluQ29ubmVjdGlvbkNvc3QodmVjdG9yPGludD4mIHdhcmVob3VzZUNhcGFjaXR5LCB2ZWN0b3I8dmVjdG9yPGludD4+JiBhZGRpdGlvbmFsSHVicykgewogICAgaW50IG4gPSB3YXJlaG91c2VDYXBhY2l0eS5zaXplKCk7CgogICAgdmVjdG9yPGxvbmcgbG9uZz4gcHJlZml4U3VtKG4gKyAxLCAwKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgcHJlZml4U3VtW2kgKyAxXSA9IHByZWZpeFN1bVtpXSArIHdhcmVob3VzZUNhcGFjaXR5W2ldOwogICAgfQoKICAgIHN0ZDo6dmVjdG9yPGxvbmcgbG9uZz4gcmVzdWx0czsKCiAgICBmb3IgKGNvbnN0IGF1dG8mIHF1ZXJ5IDogYWRkaXRpb25hbEh1YnMpIHsKICAgICAgICBpbnQgaHViQSA9IHF1ZXJ5WzBdOwogICAgICAgIGludCBodWJCID0gcXVlcnlbMV07CiAgICAgICAgCiAgICAgICAgaW50IGhhID0gaHViQSAtIDE7CiAgICAgICAgaW50IGhiID0gaHViQiAtIDE7CgogICAgICAgIGxvbmcgbG9uZyB0b3RhbENvc3QgPSAwOwoKICAgICAgICBpZiAoaGEgPiAwKSB7CiAgICAgICAgICAgIGxvbmcgbG9uZyBjb3N0MSA9IChsb25nIGxvbmcpaGEgKiB3YXJlaG91c2VDYXBhY2l0eVtoYV0gLSBwcmVmaXhTdW1baGFdOwogICAgICAgICAgICB0b3RhbENvc3QgKz0gY29zdDE7CiAgICAgICAgfQoKICAgICAgICBpZiAoaGIgPiBoYSArIDEpIHsKICAgICAgICAgICAgbG9uZyBsb25nIGNvdW50MiA9IGhiIC0gaGEgLSAxOwogICAgICAgICAgICBsb25nIGxvbmcgc3VtX2NhcGFjaXRpZXMyID0gcHJlZml4U3VtW2hiXSAtIHByZWZpeFN1bVtoYSArIDFdOwogICAgICAgICAgICBsb25nIGxvbmcgY29zdDIgPSBjb3VudDIgKiB3YXJlaG91c2VDYXBhY2l0eVtoYl0gLSBzdW1fY2FwYWNpdGllczI7CiAgICAgICAgICAgIHRvdGFsQ29zdCArPSBjb3N0MjsKICAgICAgICB9CgogICAgICAgIGlmIChuIC0gMSA+IGhiICsgMSkgewogICAgICAgICAgICBsb25nIGxvbmcgY291bnQzID0gKG4gLSAxKSAtIChoYiArIDEpOyAvLyBOdW1iZXIgb2Ygd2FyZWhvdXNlcyBpbiByYW5nZSBbaGIrMSwgbi0yXQogICAgICAgICAgICBsb25nIGxvbmcgc3VtX2NhcGFjaXRpZXMzID0gcHJlZml4U3VtW24gLSAxXSAtIHByZWZpeFN1bVtoYiArIDFdOwogICAgICAgICAgICBsb25nIGxvbmcgY29zdDMgPSBjb3VudDMgKiB3YXJlaG91c2VDYXBhY2l0eVtuIC0gMV0gLSBzdW1fY2FwYWNpdGllczM7CiAgICAgICAgICAgIHRvdGFsQ29zdCArPSBjb3N0MzsKICAgICAgICB9CgogICAgICAgIHJlc3VsdHMucHVzaF9iYWNrKHRvdGFsQ29zdCk7CiAgICB9CgogICAgcmV0dXJuIHJlc3VsdHM7Cn0KCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJaW50IG47CgljaW4gPj4gbjsKCXZlY3RvcjxpbnQ+IHdhcmVob3VzZUNhcGFjaXR5KG4pOwoJZm9yIChpbnQgaT0wO2k8bjtpKyspIGNpbiA+PiB3YXJlaG91c2VDYXBhY2l0eVtpXTsKCQoJaW50IG07CgljaW4gPj4gbTsKCXZlY3Rvcjx2ZWN0b3I8aW50Pj4gYWRkaXRpb25hbEh1YnM7Cglmb3IgKGludCBpPTA7aTxtO2krKykgewoJCWludCB4LHk7CgkJY2luID4+IHggPj4geTsKCQlhZGRpdGlvbmFsSHVicy5wdXNoX2JhY2soe3gsIHl9KTsKCX0KCQoJdmVjdG9yPGxvbmcgbG9uZz4gYW5zID0gZ2V0TWluQ29ubmVjdGlvbkNvc3Qod2FyZWhvdXNlQ2FwYWNpdHksIGFkZGl0aW9uYWxIdWJzKTsKCQoJZm9yKGF1dG8geDogYW5zKSB7CgkJY291dCA8PCB4IDw8ICIgIjsKCX0KCQoJcmV0dXJuIDA7Cn0=