rt
# include <bits/stdc++.h>
# define I return
# define AK 0
# define IOI ;
using namespace std;
typedef long long ll;
typedef pair <int, int> pii;
int n, m, t, len, a[50005], pie[50005], s1[50005], s2[50005];
ll sum, ans[50005];
struct node {
int x, y, id, op;
bool operator < (const node& a) const {
return pie[x] != pie[a.x] ? pie[x] < pie[a.x] : pie[x] & 1 ? y > a.y : y < a.y;
}
} q[200005];
void add1 (const int x) {
sum += s2[a[x]];
++ s1[a[x]];
return ;
}
void del1 (const int x) {
sum -= s2[a[x]];
-- s1[a[x]];
return ;
}
void add2 (const int x) {
sum += s1[a[x]];
++ s2[a[x]];
return ;
}
void del2 (const int x) {
sum -= s1[a[x]];
-- s2[a[x]];
return ;
}
int main () {
ios::sync_with_stdio (0);
cin.tie (0);
cout.tie (0);
cin >> n;
len = n / sqrt (m);
for (int i = 1; i <= n; ++ i)
cin >> a[i], pie[i] = i / len;
cin >> m;
for (int i = 0, l1, l2, r1, r2; i < m; ++ i) {
cin >> l1 >> r1 >> l2 >> r2;
q[++ t] = {r1, r2, i, 1};
q[++ t] = {l1 - 1, r2, i, -1};
q[++ t] = {r1, l2 - 1, i, -1};
q[++ t] = {l1 - 1, l2 - 1, i, 1};
}
sort (q + 1, q + 1 + t);
for (int i = 1, x = 0, y = 0; i <= t; ++ i) {
while (x < q[i].x)
add1 (++ x);
while (y < q[i].y)
add2 (++ y);
while (x > q[i].x)
del1 (x --);
while (y > q[i].y)
del2 (y --);
ans[q[i].id] += q[i].op * sum;
}
for (int i = 0; i < m; ++ i)
cout << ans[i] << '\n';
I AK IOI
}