// yukicoder: No.118 門松列(2) // 2019.7.6 bal4u #include #if 1 #define gc() getchar_unlocked() #else #define gc() getchar() #endif int in() { // 非負整数の入力 int n = 0, c = gc(); do n = 10 * n + (c & 0xf); while ((c = gc()) >= '0'); return n; } int f[105]; int main() { int i, j, k, n; long long ans; n = in(); while (n--) f[in()]++; n = 100; while (!f[n]) n--; ans = 0; for (i = 0; i <= n; i++) if (f[i]) { for (j = i+1; j <= n; j++) if (f[j]) { for (k = j+1; k <= n; k++) ans += (long long)f[i]*f[j]*f[k]; } } printf("%d\n", (int)(ans % 1000000007)); return 0; }