#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll f[30010][5];
int a[30010], n, m, b[30010], t;
ll c[30010];
map<int, int> h;
void add(int x, ll y) {
while (x <= t) {
c[x] += y;
x += x & -x;
}
}
ll ask(int x) {
ll ans = 0;
while (x) {
ans += c[x];
x -= x & -x;
}
return ans;
}
int main() {
cin >> n;
for (register int i = 1; i <= n; ++i) scanf("%d", a + i);
memcpy(b, a, sizeof b);
sort(b + 1, b + n + 1);
t = unique(b + 1, b + n + 1) - b - 1;
f[0][0] = 1;
a[0] = 1;
for (register int i = 1; i <= n; ++i)
a[i] = lower_bound(b + 1, b + t + 1, a[i]) - b + 1;
//for (register int i = 1; i <= n; ++i)
for (register int i = 1; i <= 3; ++i) {
memset(c, 0, sizeof c);
add(1, f[i - 1][0]);
for (register int j = 1; j <= n; ++j) {
f[i][j] = ask(a[j] - 1);
add(a[j], f[i - 1][j]);
}
}
//for (register int i = 1; i <= n; ++i) cout << f[1][i];
long long ans = 0;
for (register int i = 1; i <= n; ++i) ans += f[3][i];
cout << ans;
}