#include #include #include #include #include #include #include #include #include #include #include #include #include #define INF 1000000000ll #define MOD 1000000007ll #define EPS 1e-8 #define REP(i, m) for(long long i = 0; i < m; ++i) #define FOR(i, n, m) for(long long i = n; i < m; ++i) #define ALL(v) v.begin(), v.end() #define pb push_back using namespace std; typedef long long ll; typedef pair P; typedef long double ld; ll fact(ll a) { if(a==0) return 1; else return (a*fact(a-1))%MOD; } int main() { ios::sync_with_stdio(false); int n; cin>>n; vector s(n); REP(i,n) cin>>s[i]; vector res(n,0); vector > dp(n,vector(1< > icchi(n,vector(n,0)); REP(i,n) { REP(j,n) { if(i==j) continue; int pos=0; while(pos > kyori(n,vector(1<=0; --i) { vector p; vector q; int buf=i; REP(k,n) { if(buf%2==1) { p.pb(k); } else q.pb(k); buf/=2; } for(int j=0; j p; vector q; ll buf=j; REP(k,n) { if(buf%2==1) { p.pb(k); } else q.pb(k); buf/=2; } REP(i,p.size()) { ll foo=kyori[p[i]][j]; ++foo; foo*=fact(p.size()-1); dp[i][j]=foo%MOD; res[p.size()-1]+=dp[i][j]; res[p.size()-1]%=MOD; } } REP(i,n) { if(i!=0) { res[i]=(res[i-1]*(n-i))%MOD+res[i]; res[i]%=MOD; cout<