#include<bits/stdc++.h>
#define FNAME "DAYSO"
#define xd '\n'
const int MAXN = (int)3e5 + 1;
using namespace std;
void HuuThien() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
if(fopen(FNAME".inp", "r")) {
freopen(FNAME".inp", "r", stdin);
freopen(FNAME".out", "w", stdout);
}
}
int n;
vector<int> a;
long long BIT[MAXN];
void PreBuild() {
vector<int> compress(a.begin() + 1, a.end());
sort(compress.begin(), compress.end());
for(int i = 1; i <= n ; i++) {
a[i] = lower_bound(compress.begin(), compress.end(), a[i]) - compress.begin() + 1;
}
}
struct BuildBig{
vector<long long> preLeft;
vector<long long> preRight;
void Update(int pos, int val) {
while(pos <= n) {
BIT[pos] += val;
pos += (pos & -pos);
}
}
long long getSum(int pos) {
long long ans = 0;
while(pos >= 1) {
ans += BIT[pos];
pos -= (pos & -pos);
}
return ans;
}
long long GetBig() {
preLeft.assign(n + 1, 0);
preRight.assign(n + 1, 0);
for(int i = 1; i <= n ; i++) {
preLeft[i] = getSum(a[i]);
Update(a[i], 1);
}
memset(BIT, 0, sizeof(BIT));
for(int i = n; i >= 1; i--) {
preRight[i] = getSum(a[i]);
Update(a[i], 1);
}
long long ans = 0;
for(int i = 1; i <= n ; i++) {
ans += 1ll * preLeft[i] * preRight[i];
}
return ans;
}
};
struct BuildSmall{
vector<long long> preLeft;
vector<long long> preRight;
void Update(int pos, int val) {
while(pos <= n) {
BIT[pos] += val;
pos += (pos & -pos);
}
}
long long getSum(int pos) {
long long ans = 0;
while(pos >= 1) {
ans += BIT[pos];
pos -= (pos & -pos);
}
return ans;
}
long long GetSmall() {
preLeft.assign(n + 1, 0);
preRight.assign(n + 1, 0);
memset(BIT, 0, sizeof(BIT));
for(int i = 1; i <= n ; i++) {
preLeft[i] = getSum(n) - getSum(a[i] - 1);
Update(a[i], 1);
}
memset(BIT, 0, sizeof(BIT));
for(int i = n; i >= 1; i--) {
preRight[i] = getSum(n) - getSum(a[i] - 1);
Update(a[i], 1);
}
long long ans = 0;
for(int i = 1; i <= n ; i++) {
ans += 1ll * preLeft[i] * preRight[i];
}
return ans;
}
};
void Init() {
cin >> n;
a.assign(n + 1, 0);
for(int i = 1; i <= n ; i++) {
cin >> a[i];
}
}
void Solve() {
PreBuild();
long long res = 0;
BuildBig B;
BuildSmall S;
res += B.GetBig();
res += S.GetSmall();
vector<int> cnt(n + 1, 0);
for(int i = 1; i <= n ; i++) cnt[a[i]]++;
for(int i = 1; i <= n ; i++) res -= 1ll * cnt[i] * (cnt[i] - 1) * (cnt[i] - 2) / 6;
cout << res;
}
signed main() {
HuuThien();
Init();
Solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBGTkFNRSAiREFZU08iCiNkZWZpbmUgeGQgJ1xuJwpjb25zdCBpbnQgTUFYTiA9IChpbnQpM2U1ICsgMTsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgSHV1VGhpZW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICBpZihmb3BlbihGTkFNRSIuaW5wIiwgInIiKSkgewogICAgICAgIGZyZW9wZW4oRk5BTUUiLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oRk5BTUUiLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KfQoKaW50IG47CnZlY3RvcjxpbnQ+IGE7CmxvbmcgbG9uZyBCSVRbTUFYTl07Cgp2b2lkIFByZUJ1aWxkKCkgewogICAgdmVjdG9yPGludD4gY29tcHJlc3MoYS5iZWdpbigpICsgMSwgYS5lbmQoKSk7CiAgICBzb3J0KGNvbXByZXNzLmJlZ2luKCksIGNvbXByZXNzLmVuZCgpKTsKCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG4gOyBpKyspIHsKICAgICAgICBhW2ldID0gbG93ZXJfYm91bmQoY29tcHJlc3MuYmVnaW4oKSwgY29tcHJlc3MuZW5kKCksIGFbaV0pIC0gY29tcHJlc3MuYmVnaW4oKSArIDE7CiAgICB9Cn0KCnN0cnVjdCBCdWlsZEJpZ3sKICAgIHZlY3Rvcjxsb25nIGxvbmc+IHByZUxlZnQ7CiAgICB2ZWN0b3I8bG9uZyBsb25nPiBwcmVSaWdodDsKCiAgICB2b2lkIFVwZGF0ZShpbnQgcG9zLCBpbnQgdmFsKSB7CiAgICAgICAgd2hpbGUocG9zIDw9IG4pIHsKICAgICAgICAgICAgQklUW3Bvc10gKz0gdmFsOwogICAgICAgICAgICBwb3MgKz0gKHBvcyAmIC1wb3MpOwogICAgICAgIH0KICAgIH0KCiAgICBsb25nIGxvbmcgZ2V0U3VtKGludCBwb3MpIHsKICAgICAgICBsb25nIGxvbmcgYW5zID0gMDsKICAgICAgICAgICAgd2hpbGUocG9zID49IDEpIHsKICAgICAgICAgICAgICAgIGFucyArPSBCSVRbcG9zXTsKICAgICAgICAgICAgICAgIHBvcyAtPSAocG9zICYgLXBvcyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBhbnM7CiAgICAgICAgfQoKICAgIGxvbmcgbG9uZyBHZXRCaWcoKSB7CiAgICAgICAgcHJlTGVmdC5hc3NpZ24obiArIDEsIDApOwogICAgICAgIHByZVJpZ2h0LmFzc2lnbihuICsgMSwgMCk7CgogICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbiA7IGkrKykgewogICAgICAgICAgICBwcmVMZWZ0W2ldID0gZ2V0U3VtKGFbaV0pOwogICAgICAgICAgICBVcGRhdGUoYVtpXSwgMSk7CiAgICAgICAgfQoKICAgICAgICBtZW1zZXQoQklULCAwLCBzaXplb2YoQklUKSk7CgogICAgICAgIGZvcihpbnQgaSA9IG47IGkgPj0gMTsgaS0tKSB7CiAgICAgICAgICAgIHByZVJpZ2h0W2ldID0gZ2V0U3VtKGFbaV0pOwogICAgICAgICAgICBVcGRhdGUoYVtpXSwgMSk7CiAgICAgICAgfQoKCiAgICAgICAgbG9uZyBsb25nIGFucyA9IDA7CiAgICAgICAgZm9yKGludCBpID0gMTsgaSA8PSBuIDsgaSsrKSB7CiAgICAgICAgICAgIGFucyArPSAxbGwgKiBwcmVMZWZ0W2ldICogcHJlUmlnaHRbaV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYW5zOwogICAgfQp9OwoKc3RydWN0IEJ1aWxkU21hbGx7CiAgICB2ZWN0b3I8bG9uZyBsb25nPiBwcmVMZWZ0OwogICAgdmVjdG9yPGxvbmcgbG9uZz4gcHJlUmlnaHQ7CgogICAgdm9pZCBVcGRhdGUoaW50IHBvcywgaW50IHZhbCkgewogICAgICAgIHdoaWxlKHBvcyA8PSBuKSB7CiAgICAgICAgICAgIEJJVFtwb3NdICs9IHZhbDsKICAgICAgICAgICAgcG9zICs9IChwb3MgJiAtcG9zKTsKICAgICAgICB9CiAgICB9CgogICAgbG9uZyBsb25nIGdldFN1bShpbnQgcG9zKSB7CiAgICAgICAgbG9uZyBsb25nIGFucyA9IDA7CiAgICAgICAgd2hpbGUocG9zID49IDEpIHsKICAgICAgICAgICAgYW5zICs9IEJJVFtwb3NdOwogICAgICAgICAgICBwb3MgLT0gKHBvcyAmIC1wb3MpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFuczsKICAgIH0KCiAgICBsb25nIGxvbmcgR2V0U21hbGwoKSB7CiAgICAgICAgcHJlTGVmdC5hc3NpZ24obiArIDEsIDApOwogICAgICAgIHByZVJpZ2h0LmFzc2lnbihuICsgMSwgMCk7CgogICAgICAgIG1lbXNldChCSVQsIDAsIHNpemVvZihCSVQpKTsKICAgICAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG4gOyBpKyspIHsKICAgICAgICAgICAgcHJlTGVmdFtpXSA9IGdldFN1bShuKSAtIGdldFN1bShhW2ldIC0gMSk7CiAgICAgICAgICAgIFVwZGF0ZShhW2ldLCAxKTsKICAgICAgICB9CgogICAgICAgIG1lbXNldChCSVQsIDAsIHNpemVvZihCSVQpKTsKCiAgICAgICAgZm9yKGludCBpID0gbjsgaSA+PSAxOyBpLS0pIHsKICAgICAgICAgICAgcHJlUmlnaHRbaV0gPSBnZXRTdW0obikgLSBnZXRTdW0oYVtpXSAtIDEpOwogICAgICAgICAgICBVcGRhdGUoYVtpXSwgMSk7CiAgICAgICAgfQoKICAgICAgICBsb25nIGxvbmcgYW5zID0gMDsKICAgICAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG4gOyBpKyspIHsKICAgICAgICAgICAgYW5zICs9IDFsbCAqIHByZUxlZnRbaV0gKiBwcmVSaWdodFtpXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBhbnM7CiAgICB9Cn07Cgp2b2lkIEluaXQoKSB7CiAgICBjaW4gPj4gbjsKICAgIGEuYXNzaWduKG4gKyAxLCAwKTsKCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG4gOyBpKyspIHsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgIH0KfQoKdm9pZCBTb2x2ZSgpIHsKICAgIFByZUJ1aWxkKCk7CiAgICBsb25nIGxvbmcgcmVzID0gMDsKCiAgICBCdWlsZEJpZyBCOwogICAgQnVpbGRTbWFsbCBTOwoKICAgIHJlcyArPSBCLkdldEJpZygpOwogICAgcmVzICs9IFMuR2V0U21hbGwoKTsKCiAgICB2ZWN0b3I8aW50PiBjbnQobiArIDEsIDApOwoKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbiA7IGkrKykgY250W2FbaV1dKys7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG4gOyBpKyspIHJlcyAtPSAxbGwgKiBjbnRbaV0gKiAoY250W2ldIC0gMSkgKiAoY250W2ldIC0gMikgLyA2OwogICAgY291dCA8PCByZXM7Cn0KCnNpZ25lZCBtYWluKCkgewogICAgSHV1VGhpZW4oKTsKICAgIEluaXQoKTsKICAgIFNvbHZlKCk7Cn0K