#include #include #include using namespace std; int main() { cin.tie(0); ios_base::sync_with_stdio(false); int N; cin >> N; vector A(N); for (int i = 0; i < N; ++i) { cin >> A[i]; } vector SA = A; sort(SA.begin(), SA.end()); SA.erase(unique(SA.begin(), SA.end()), SA.end()); for (int i = 0; i < N; ++i) { A[i] = lower_bound(SA.begin(), SA.end(), A[i]) - SA.begin(); } int S = SA.size(); vector > G(S); for (int i = 0; i < N; ++i) { G[A[i]].push_back(i); } vector lb(N), rb(N); for (int i = 0; i < S; ++i) { for (int j = 0; j < G[i].size(); ++j) { lb[G[i][j]] = j; rb[G[i][j]] = G[i].size() - j - 1; } } vector bit1(N + 1); vector ans(S + 1); vector sum(N + 1); for (int i = 0; i < S; ++i) { for (int j = 0; j < G[i].size(); ++j) { long long diff = 1LL * (j + 1) * (G[i].size() - j - 1) - 1LL * j * (G[i].size() - j); sum[G[i][j] + 1] += diff; } } for (int i = 0; i < N; ++i) { sum[i + 1] += sum[i]; ans[A[i] + 1] -= sum[i]; } int cnt = 0; for (int i = 0; i < S; ++i) { for (int j : G[i]) { int lx = 0; for (int k = j; k >= 1; k -= k & (-k)) { lx += bit1[k]; } int ly = j - lb[j] - lx; int rx = cnt - lx; int ry = (N - j - 1) - rb[j] - rx; ans[i + 1] += 1LL * lx * rx + 1LL * ly * ry; } for (int j = 0; j < G[i].size(); ++j) { ans[i + 1] += 1LL * j * (G[i].size() - j); } cnt += G[i].size(); for (int j : G[i]) { for (int k = j + 1; k <= N; k += k & (-k)) { ++bit1[k]; } } } for (int i = 0; i < S; ++i) { ans[i + 1] += ans[i]; } int Q; cin >> Q; for (int i = 0; i < Q; ++i) { int L, H; cin >> L >> H; int pl = lower_bound(SA.begin(), SA.end(), L) - SA.begin(); int pr = lower_bound(SA.begin(), SA.end(), H + 1) - SA.begin(); cout << ans[pr] - ans[pl] << '\n'; } return 0; }