#include #include #include using namespace std; constexpr long long M = 1e9+7; int main(){ int n; cin >> n; vector v(n), dp(n), f(n+1); for(auto &x:v) cin >> x; sort(v.begin(), v.end()); f[0] = 1; for(int i = 0; i < n; ++i){ dp[i] = f[i+1] = (i+1) * f[i] % M; for(int j = 0; j < i; ++j) dp[i] -= dp[j] * f[i-j] % M; dp[i] %= M; } cout << dp[n-1] << endl; }