#include <bits/stdc++.h>
using namespace std;

const int MAXN = 5e5 + 5;
int n;
long long bit[MAXN];

//Thêm v vào a_p
void add(int p , int v) {
    for(;p<=n;p+=(p&-p)) {
        bit[p] += v;
    }
}
//Tính tổng khi biết i
long long pre(int p) {
    long long sum = 0;
    for(;p>0;p-=(p&-p)) {
        sum += bit[p];
    }
    return sum;
}
//Tính tổng từ l,r
long long query(int l , int r) {
    return pre(r) - pre(l-1);
}
int main() {
    cin>>n;
    vector<long long> a(n);
    map<long long , int> tan_so;
    for(int i=0;i<n;i++) {
        cin>>a[i];
        tan_so[a[i]]++;
    }
    int pos = 0;
    vector<long long> sau_khi_nen;
    for(auto it : tan_so) {
    	sau_khi_nen.push_back(it.first);
	}
	vector<long long> idx1(n);
	for(int i=0;i<n;i++) {
		long long vt = lower_bound(sau_khi_nen.begin() , sau_khi_nen.end() , a[i]) - sau_khi_nen.begin() + 1;
		if(vt>1) {
			idx1[i] = pre(vt-1);
		}else {
			idx1[i] = 0;
		}
		add(vt , 1);
	}
	vector<long long> idx2(n);
	for(int i=0;i<n;i++) {
		long long vt = lower_bound(sau_khi_nen.begin() , sau_khi_nen.end() , a[i]) - sau_khi_nen.begin() + 1;
		if(vt>1) {
			add(vt , -1);
			idx2[i] = pre(vt-1);
		}else {
			add(vt , -1);
			idx2[i] = 0;
		}
	}
	long long kq = 0;
	for(long long i=0;i<n;i++) {
		kq += idx1[i] * idx2[i];
	}
	cout<<kq;
    return 0;
}