#include #define Add(x,y) (x+y>=mod)?(x+y-mod):(x+y) #define lowbit(x) x&(-x) #define pi pair #define pii pair> #define iip pair,ll> #define ppii pair,pair> #define fi first #define se second #define full(l,r,x) for(auto it=l;it!=r;it++) (*it)=x #define Full(a) memset(a,0,sizeof(a)) #define open(s1,s2) freopen(s1,"r",stdin),freopen(s2,"w",stdout); #define For(i,l,r) for(register int i=l;i<=r;i++) #define _For(i,l,r) for(register int i=r;i>=l;i--) using namespace std; typedef double db; typedef unsigned long long ull; typedef long long ll; bool Begin; const ll N=2e5+10; inline ll read(){ ll x=0,f=1; char c=getchar(); while(c<'0'||c>'9'){ if(c=='-') f=-1; c=getchar(); } while(c>='0'&&c<='9'){ x=(x<<1)+(x<<3)+(c^48); c=getchar(); } return x*f; } inline void write(ll x){ if(x<0){ putchar('-'); x=-x; } if(x>9) write(x/10); putchar(x%10+'0'); } ll n,q,l,r,sum,cnt; ll a[N],t[N],s1[N],s2[N],p1[N],p2[N],p3[N],q1[N],q2[N],q3[N],s[N],h[N]; void insert(ll x){ s1[x]++; sum+=s2[x]; } void del(ll x){ s2[x]--; sum-=s1[x]; } namespace Tree{ ll a[N]; void init(){ For(i,1,cnt) a[i]=0; } void add(ll x,ll v){ for(int i=x;i<=cnt;i+=lowbit(i)) a[i]+=v; } ll query(ll x){ ll sum=0; for(int i=x;i;i-=lowbit(i)) sum+=a[i]; return sum; } }; bool End; int main(){ // open("sequence.in","sequence.out"); n=read(); For(i,1,n){ a[i]=read(); h[++cnt]=a[i]; } sort(h+1,h+cnt+1); cnt=unique(h+1,h+cnt+1)-(h+1); For(i,1,n) a[i]=lower_bound(h+1,h+cnt+1,a[i])-h; For(i,1,n){ p1[i]=Tree::query(a[i]-1); p2[i]=i-Tree::query(a[i])-1; p3[i]=i-1-p1[i]-p2[i]; Tree::add(a[i],1); } Tree::init(); _For(i,1,n){ q1[i]=Tree::query(a[i]-1); q2[i]=n-i-Tree::query(a[i]); q3[i]=n-i-q1[i]-q2[i]; Tree::add(a[i],1); s2[a[i]]++; } For(i,1,n){ del(a[i]); t[i]=sum; insert(a[i]); } For(i,2,n-1){ // cerr<