import numpy as np MOD = 10**9+7 SIZE = 6000 fac = [0]*SIZE fac[0] = fac[1] = 1 for i in range(2,SIZE): fac[i] = fac[i-1]*i%MOD n,*a = map(int,open(0).read().split()) r = [0]*n for i in a: if i < n: r[i] += 1 dp = np.array([1]+[0]*n) for ri in r: dp[1:] += ri*dp[:n] dp %= MOD ans = 0 sgn = 1 for i,xi in enumerate(dp): ans += sgn*xi*fac[n-i]%MOD sgn *= -1 print(ans%MOD)