RT
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e6+10;
int a[maxn];
int t[maxn];
int l[maxn],r[maxn];
map<int,int> mp;
int lowbit(int x){
return x&(-x);
}
int sum1[maxn],sum2[maxn];
int n,m;
void modify(int i,int sum[]){
while (i<=m){
sum[i]++;
i+=lowbit(i);
}
}
int query(int i,int sum[]){
int ans=0;
while (i>=1){
ans+=sum[i];
i-=lowbit(i);
}
return ans;
}
signed main(){
scanf("%lld",&n);
for (int i=1;i<=n;i++){
scanf("%lld",&a[i]);
t[i]=a[i];
}
sort(t+1,t+1+n);
m=unique(t+1,t+1+n)-(t+1);
for (int i=1;i<=m;i++) mp[t[i]]=i;
for (int i=1;i<=n;i++) a[i]=mp[a[i]];
for (int i=1;i<=n;i++){
l[i]=query(m,sum1)-query(a[i],sum1);
modify(a[i],sum1);
}
for (int i=n;i>=1;i--){
r[i]=query(a[i]-1,sum2);
modify(a[i],sum2);
}
int ans=0;
for (int i=2;i<n;i++){
ans+=l[i]*r[i];
}
printf("%lld\n",ans);
return 0;
}