#include using namespace std; #define int long long typedef vectorvint; typedef pairpint; typedef vectorvpint; #define rep(i,n) for(int i=0;i<(n);i++) #define reps(i,f,n) for(int i=(f);i<(n);i++) #define all(v) (v).begin(),(v).end() #define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();it++) #define pb push_back #define mp make_pair #define fi first #define se second templateinline void chmin(A &a,B b){if(a>b)a=b;} templateinline void chmax(A &a,B b){if(adat; segtree():dat(SEG*2){} void init(vint v){ for(int i=0;i=0;i--){ if(dat[i*2+1].size()+dat[i*2+2].size()==0)continue; dat[i].resize(dat[i*2+1].size()+dat[i*2+2].size()); merge(all(dat[i*2+1]),all(dat[i*2+2]),dat[i].begin()); } } int query(int a,int b,int ll,int hh,int k=0,int l=0,int r=SEG){ if(r<=a||b<=l)return 0; if(a<=l&&r<=b)return lower_bound(all(dat[k]),hh)-lower_bound(all(dat[k]),ll); return query(a,b,ll,hh,k*2+1,l,(l+r)/2)+query(a,b,ll,hh,k*2+2,(l+r)/2,r); } }; struct BIT{ int N; vint dat; void init(int n){ N=n; dat.resize(n+1); } void add(int k,int x){ for(k++;k<=N;k+=k&-k)dat[k]+=x; } int sum(int k){ int ret=0; for(k++;k;k-=k&-k)ret+=dat[k]; return ret; } }; int N; vint A; int Q; int L[222222],H[222222]; int acc[777777]; int cnt[777777],cnt2[7777777]; signed main(){ cin>>N; A.resize(N); rep(i,N)cin>>A[i]; cin>>Q; rep(i,Q)cin>>L[i]>>H[i]; vint as; rep(i,N)as.pb(A[i]); rep(i,Q){ L[i]--; as.pb(L[i]); as.pb(H[i]); } sort(all(as));as.erase(unique(all(as)),as.end()); rep(i,N)A[i]=lower_bound(all(as),A[i])-as.begin(); rep(i,Q){ L[i]=lower_bound(all(as),L[i])-as.begin(); H[i]=lower_bound(all(as),H[i])-as.begin(); } segtree seg;seg.init(A); rep(i,N)cnt[A[i]]++; BIT bit;bit.init(7777777); rep(i,N){ int l=seg.query(0,i,0,A[i]); int r=seg.query(i+1,N,0,A[i]); acc[A[i]]+=l*r; l=seg.query(0,i,A[i]+1,1001001001); r=seg.query(i+1,N,A[i]+1,1001001001); acc[A[i]]+=l*r; acc[A[i]]-=bit.sum(A[i]-1); acc[A[i]]-=bit.sum(7777777)-bit.sum(A[i]); int tmp=bit.sum(A[i])-bit.sum(A[i]-1); cnt2[A[i]]++; bit.add(A[i],-tmp+cnt2[A[i]]*(cnt[A[i]]-cnt2[A[i]])); } for(int i=0;i<777777-1;i++)acc[i+1]+=acc[i]; for(int i=0;i