#include "bits/stdc++.h" using namespace std; #define MAX 20 int N; int A[1 << MAX]; int B[1 << MAX]; long long calc() { map m1; for (int i = 0; i < N; i++) { m1[A[i]]++; } map m2; for (auto i : m1){ m2[i.second]++; } long long ans = 0; for (auto i : m2) { for (auto j : m2) { if (i.first <= j.first) continue; for (auto k : m2) { if (i.first <= k.first) continue; if (j.first <= k.first) continue; ans += (long long)i.first * j.first * k.first * i.second * j.second * k.second; } } } for (auto i : m2) { for (auto j : m2) { if (i == j) continue; ans += (long long)i.first * i.first * j.first * ((long long)i.second * (i.second - 1) / 2) * j.second; } } for (auto i : m2) { ans += (long long)i.first * i.first * i.first * (((long long)(i.second) * (i.second - 1) * (i.second - 2) / 6)); } return ans; } class BIT{ public: int dp[1 << MAX]; void init(){ for (int i = 0; i < (1< 0){ ret += dp[a]; a &= a - 1; } return ret; } void bitadd(int a, int b){ while (a < (1 << MAX)){ dp[a] += b; a += a - (a & (a - 1)); } } }; int main(){ cin >> N; for (int i = 0; i < N; i++) { cin >> A[i]; B[i] = A[i]; } sort(B, B + N); map m; int count = 0; int pre = -1; for (int i = 0; i < N; i++) { if (pre != B[i]){ pre = B[i]; count++; } m[B[i]] = count; } for (int i = 0; i < N; i++) { A[i] = m[A[i]]; } BIT bitA; BIT bitB; bitA.init(); bitB.init(); long ans = calc(); for (int i = 0; i < N; i++) { bitB.bitadd(A[i], 1); } for (int i = 0; i < N; i++) { bitB.bitadd(A[i], -1); ans -= bitA.bitcall(A[i] - 1) * (N - i - 1 - bitB.bitcall(A[i])); ans -= (i - bitA.bitcall(A[i])) * bitB.bitcall(A[i] - 1); bitA.bitadd(A[i], 1); } cout << ans << endl; }