#include <bits/stdc++.h>
using namespace std;

#include <atcoder/all>
using namespace atcoder;
using mint = modint1000000007;

void solve() {
    int N; cin >> N; 
    vector<int> cnt(5001);
    for (int i = 0; i < N; i++) {
        int x; cin >> x; cnt[x]++;
    }

    vector<mint> fact(100000);
    fact[0] = 1;
    for (int i = 1; i < 100000; i++) {
        fact[i] = fact[i - 1] * i;
    }

    vector<mint> dp(N + 1);
    dp[0] = 1;

    for (int i = 0; i < N; i++) {
        for (int j = N - 1; j >= 0; j--) {
            dp[j + 1] += dp[j] * cnt[i];
        }
    }

    mint ans = fact[N];
    for (int i = 1; i <= N; i++) {
        ans += (i % 2 == 1 ? -1 : 1) * dp[i] * fact[N - i];
    }
    cout << ans.val() << endl;
}

int main() {
    solve();
}