/// __Macro's__
#include <bits/stdc++.h>
using namespace std;
#define ll                   long long
#define II                   pair<int,int>
#define III                  pair<int, II>
#define VI                   vector<int>
#define VII                  vector<II>
#define VIII                 vector<III>
#define VVI                  vector<vector<int> >
#define VVII                 vector<vector<II> >
#define fr                   first
#define sc                   second
#define mkpr                 make_pair
#define PQ                   priority_queue
#define pb                   push_back
#define eb                   emplace_back
#define all(v)               v.begin(), v.end()
#define LINE                 putc('\n', stdout)
#define SPACE                putc(' ' , stdout)
#define TAB                  putc('\t', stdout)
#define fillarr(arr, val)    fill((int*)arr, (int*)arr+(sizeof(arr)/sizeof(int)), val)
#define Log2(x)              (31^__builtin_clz(x))
#define inf64                ((ll)1e17)
#define inf                  1000000007
#define MOD                  1000000007LL
#define getint ReadInt()
const char IO_MODE = 3; // in-->00<--out (MSB-->LSB) | 0: Norm, 1: Fast 
inline ll ReadInt(){ll x=0,s=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')s=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';
c=getchar();}return s*x;}inline void WriteInt(ll x){char c[20];if(!x){putchar('0');return;}if(x<0)putchar('-'),x=-x;int i=0;while(x>0)
c[++i]=x%10,x/=10;while(i)putchar(c[i--]+48);}template <typename T>inline void out(T x){if(IO_MODE&1)WriteInt(x);else if(typeid(x)==typeid(int))
printf("%i", x);else printf("%lld", (ll)x);}template<typename T, typename... Args>inline void out(T x,Args...args){out(x);SPACE;out(args...);}
template <typename T>inline void in(T &x){if(IO_MODE&2) x=ReadInt();else if(typeid(x)==typeid(int))scanf("%i",&x);else if(typeid(x)==typeid(ll))
scanf("%lld",&x);}template<typename T, typename... Args>inline void in(T &x,Args&...args){in(x);in(args...);}
int aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,mm,nn,oo,pp,qq,rr,ss,tt,uu,vv,ww,xx,yy,zz;
int tc;
///
/// ---------------------------------------------- (Debug) -----------------------------------------------
#define dbg debug()
#define sim template < class c
#define ris return * this
#define dor > debug & operator <<
#define eni(x) sim > typename enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
sim > struct rge { c b, e; }; sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
sim > auto dud(c* x) -> decltype(cerr << *x, 0); sim > char dud(...);
struct debug {
#ifdef LOCAL
~debug() { cerr << endl; }
eni(!=) cerr << boolalpha << i; ris; }
eni(==) ris << range(begin(i), end(i));}
sim, class b dor(pair < b, c > d) {ris << "(" << d.first << ", " << d.second << ")";}
sim dor(rge<c> d) {*this << "["; for (auto it = d.b; it != d.e; ++it) *this << ", " + 2 * (it == d.b) << *it; ris << "]";}
#else
sim dor(const c&) { ris; }
#endif
};
#define var(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
/// ------------------------------------------------------------------------------------------------------

#ifdef LOCAL
  #define nax 1000
  #define qax 1000
#else
  #define nax 200100
  #define qax 200100
#endif

#define int long long

ll Mod_Inv(ll b){ll r=1, p=MOD-2;
  for( ; p>0 ; p>>=1, b=b*b%MOD) if(p&1) r=r*b%MOD; return r;
}

int n;
int sz[nax], dp[nax], ans[nax];
VI adjList[nax];

void dfs(int u, int par) {
  if(~par) adjList[u].erase(find(adjList[u].begin(), adjList[u].end(), par));

  sz[u]=dp[u]=1;
  for(auto v:adjList[u]) {
      dfs(v, u);
      sz[u] += sz[v];
      dp[u] = dp[u] * dp[v] % MOD * sz[v] % MOD;
    }
}

void shift(int u, int sofar) {
  
  vector<int> P,S;
  for(auto v:adjList[u]) P.pb(dp[v] * sz[v] % MOD);
  for(auto v:adjList[u]) S.pb(dp[v] * sz[v] % MOD);
  partial_sum(P.begin(),  P.end(),  P.begin(),  [](int a, int b){return a*b%MOD;});
  partial_sum(S.rbegin(), S.rend(), S.rbegin(), [](int a, int b){return a*b%MOD;});

  ans[u] = sofar * dp[u] % MOD;
  for(int i=0 ; i<adjList[u].size() ; i++) {
    int v = adjList[u][i];;
    shift(v, sofar * (n-sz[v]) % MOD 
                   * (i==0?1:P[i-1]) % MOD 
                   * (i+1==S.size()?1:S[i+1]) % MOD);
  }
}

int32_t main() {
  in(n);
  for(int i=1 ; i<n ; i++){
    int u=getint-1, v=getint-1;
    adjList[u].pb(v);
    adjList[v].pb(u);
  }

  dfs(0, -1);
  shift(0, 1);

  int nFact = 1;
  for(int i=1 ; i<=n ; i++) nFact = nFact * i % MOD;

  for(int i=0 ; i<n ; i++)
    cout << nFact * Mod_Inv(ans[i] * n % MOD) % MOD << endl;

}

Measured memory_bytes: 22128