M=10**9+7
c=[0]*5000
r=0_i64
n=gets.not_nil!.to_i
n.times{c[gets.not_nil!.to_i]+=1}
a=[1_i64]+[0_i64]*n
f=a.dup
n.times{|i|f[i+1]=f[i]*-~i%M
n.downto(1){|j|a[j]=(a[j]+a[j-1]*c[i])%M}}
0.upto(n){|i|r=(r+a[i]*(-1)**(i%2)*f[n-i])%M}
puts r