MOD = 10**9 + 7 n = int(input()) cnt = [0] * 5000 # Since A_i can be up to 4999 for _ in range(n): a = int(input()) cnt[a] += 1 # Initialize DP dp = [0] * (n + 1) dp[0] = 1 for x in range(5000): current_cnt = cnt[x] if current_cnt == 0: continue new_dp = [0] * (n + 1) for k in range(n + 1): if dp[k] == 0: continue # Do not choose any student with A_i = x new_dp[k] = (new_dp[k] + dp[k]) % MOD # Choose one student with A_i = x if k + 1 <= n: new_dp[k + 1] = (new_dp[k + 1] + dp[k] * current_cnt) % MOD dp = new_dp # Precompute factorials fact = [1] * (n + 1) for i in range(1, n + 1): fact[i] = fact[i - 1] * i % MOD ans = 0 for k in range(n + 1): if dp[k] == 0: continue term = dp[k] * fact[n - k] % MOD if k % 2 == 1: term = (-term) % MOD ans = (ans + term) % MOD print(ans)