/*
 _____ _             _              _           _ 
|_   _| |__   ___   / \   _ __  ___| |__  _   _| |
  | | | '_ \ / _ \ / _ \ | '_ \/ __| '_ \| | | | |
  | | | | | |  __// ___ \| | | \__ \ | | | |_| | |
  |_| |_| |_|\___/_/   \_\_| |_|___/_| |_|\__,_|_|                                                

*/
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp> 
#include <ext/pb_ds/tree_policy.hpp>
#define ll          long long
#define pb          push_back
#define ppb         pop_back
#define	endl		'\n'
#define mii         map<ll,ll>
#define msi         map<string,ll>
#define mis         map<ll, string>
#define rep(i,a,b)    for(ll i=a;i<b;i++)
#define repr(i,a,b) for(ll i=b-1;i>=a;i--)
#define trav(a, x) 	for(auto& a : x)
#define pii         pair<ll,ll>
#define vi          vector<ll>
#define vii         vector<pair<ll, ll>>
#define vs          vector<string>
#define all(a)      (a).begin(),(a).end()
#define F           first
#define S           second
#define sz(x)       (ll)x.size()
#define hell        1000000007
#define lbnd        lower_bound
#define ubnd        upper_bound
#define max(a,b)	(a>b?a:b)
#define min(a,b)	(a<b?a:b)

/*	For Debugging	*/
#define DEBUG 		cerr<<"\n>>>I'm Here<<<\n"<<endl;
#define display(x) trav(a,x) cout<<a<<" ";cout<<endl;
#define what_is(x)  cerr << #x << " is " << x << endl;

std::mt19937_64 rng(std::chrono::steady_clock::now().time_since_epoch().count());
#define ordered_set tree<ll, null_type,less<ll>, rb_tree_tag,tree_order_statistics_node_update> 
#define TIME        cerr << "\nTime elapsed: " << setprecision(5) <<1000.0 * clock() / CLOCKS_PER_SEC << "ms\n";
#define DECIMAL(n)  cout << fixed ; cout << setprecision(n);
#define FAST ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace __gnu_pbds;
using namespace std;
#define PI 3.141592653589793
#define N  200005
ll n;
vi a[N];
ll fact[N];
ll dp1[N],dp2[N],dp3[N];
ll expo(ll base, ll exponent, ll mod) {								//return base^exponent modulo modulus
    ll ans = 1;
    while(exponent !=0 ) {
        if((exponent&1) == 1) {
            ans = ans*base ;
            ans = ans%mod;
        }
        base = base*base;
        base %= mod;
        exponent>>= 1;
    }
    return ans%mod;
}
ll modi(ll num)
{
	return expo(num,hell-2,hell);
}
void dfs(ll node,ll pr)
{
	dp1[node]=1;
	ll ans=1;
	for(auto i:a[node])
	{
		if(i!=pr)
		{
			dfs(i,node);
			ans=(ans*modi(fact[dp1[i]]))%hell;
			ans=(ans*dp2[i])%hell;
			dp1[node]+=dp1[i];
		}
	}
	ans=(ans*fact[dp1[node]-1])%hell;
	dp2[node]=ans;
	return;
}
void dfs1(ll node,ll pr,ll td2,ll td1)
{
	ll ans=(td2*modi(fact[td1]))%hell;
	for(auto i:a[node])
	{
		if(i!=pr)
		{
			ans=(ans*dp2[i])%hell;
			ans=(ans*modi(fact[dp1[i]]))%hell;
		}
	}
	dp3[node]=(ans*fact[n-1])%hell;
	ll temp1,temp2;
	for(auto i:a[node])
	{
		if(i!=pr)
		{
			temp1=(ans*fact[dp1[i]])%hell;
			temp1=(temp1*modi(dp2[i]))%hell;
			temp2=n-dp1[i];
			temp1=(temp1*fact[temp2-1])%hell;
			dfs1(i,node,temp1,temp2);
		}
	}
}
void solve()
{
	cin>>n;
	fact[0]=1;
	rep(i,1,n+1)
	fact[i]=(fact[i-1]*i)%hell;
	ll x,y;
	rep(i,1,n)
	{
		cin>>x>>y;
		a[x].pb(y);
		a[y].pb(x);
	}
	dfs(1,-1);
	dfs1(1,-1,1,0);
	rep(i,1,n+1)
	cout<<dp3[i]<<"\n";
	cout<<endl;
	return;
}
int main()
{
	FAST
	int TESTS=1;
//	cin>>TESTS;
	while(TESTS--)
	{
		solve();
	}
	TIME
	return 0;
}

Measured memory_bytes: 20976