#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; #define MODN 1000000007 ll expoModN(ll a, ll b) { if (b == 1) return a; if (b == 0) return 1; ll t = (expoModN(a, b/2)%MODN); return (((t*t)%MODN)*(expoModN(a, b%2)%MODN))%MODN; } ll combiModN(ll a, ll b) { ll ta = 1; for (ll i = 0; i < b; i++) ta = (ta*(a--))%MODN; ll tb = 1; while (b) tb = (tb*(b--))%MODN; return (ta*expoModN(tb,MODN-2))%MODN; } int main() { ll n; cin >> n; ll a[n]; for (int i = 0; i < n; i++) { cin >> a[i]; } int memo[101]; memset(memo, 0, sizeof(memo)); sort(a, a+n); vector t; t.push_back(a[0]); for (int i = 1; i < n; i++) { memo[a[i]]++; if (t[int(t.size())-1] != a[i]) { t.push_back(a[i]); } } ll x = t.size(); ll ans = combiModN(x, 3); for (int i = 0; i < 101; i++) { if (!memo[i]) continue; ans = (ans*memo[i])%MODN; } cout << ans << endl; }