#include #include #include #include #include #include #include #include #include using namespace std; #define ll long long ll mmod=1000000007; void dfs(vector> &V, int key, vector &W){ for(int i=0; i 0) { if (n & 1) res = res * a % mod; a = a * a % mod; n >>= 1; } return res; } // a^{-1} mod を計算する ll modinv(ll a, ll mod) { return modpow(a, mod - 2, mod); } int main() { int N; cin >> N; vector> v(N+1); for(int i=0; i> a >> b; v[a].push_back(b); v[b].push_back(a); } vector dpt(N+1, -1), cnt(N+1, 0); dpt[1]=1; dfs(v, 1, dpt); for(int i=1; i<=N; ++i) ++cnt[dpt[i]]; ll frac=1; for(int i=1; i<=N; ++i) frac=(frac*i)%mmod; ll ans=0; for(int i=1; i<=N; ++i){ ll t=(frac*modinv(i, mmod))%mmod; ans=(ans+(t*cnt[i])%mmod)%mmod; } cout << ans << endl; //for(int i=1; i<=N; ++i) cout << dpt[i] << ' '; //cout << endl; return 0; }