#include<cstdio>
#include<iostream>
#include<vector>
using namespace std;
const int N=1e5+10;
int n,A,B,f[N],dp[N],son[N],num[N],ex[N],mod;
vector<int>pre[N];vector<int>suf[N];vector<int>ed[N<<1];
inline void addedge(int x,int y){ed[x].push_back(y);ed[y].push_back(x);}
inline int MOD(int x,int y){x+=y;x-=x>=mod? mod:0;return x;}
inline void DFS1(int u,int fa){
	f[u]=1;son[u]=0;
	for(register int i=0;i<ed[u].size();i++){
		int v=ed[u][i];if(v==fa)continue;DFS1(v,u);
		num[v]=son[u];son[u]++;
		f[u]=1ll*f[u]*(f[v]+1)%mod;
		pre[u].push_back(f[u]);
	}
}
inline void DFS2(int u,int fa){
	f[u]=1;
	for(register int i=ed[u].size()-1;i>=0;i--){
		int v=ed[u][i];if(v==fa)continue;DFS2(v,u);
		f[u]=1ll*f[u]*(f[v]+1)%mod;
		suf[u].push_back(f[u]);
	}
}
inline void Solve(int u,int fa){
	for(register int i=0;i<ed[u].size();i++){
		int v=ed[u][i];if(v==fa)continue;
		int w1=num[v]-1>=0? pre[u][num[v]-1]:1;
		int w2=son[u]-num[v]-2>=0? suf[u][son[u]-num[v]-2]:1;
		int w=MOD(1ll*w1*w2%mod*ex[u]%mod,1);ex[v]=w;
		dp[v]=1ll*f[v]*ex[v]%mod;
		Solve(v,u);
	}
}
int main(){
	scanf("%d%d",&n,&mod);
	for(register int i=1;i<n;i++)
		scanf("%d%d",&A,&B),addedge(A,B);
	DFS1(1,0);DFS2(1,0);dp[1]=f[1];ex[1]=1;
	Solve(1,0);
	for(register int i=1;i<=n;i++)printf("%d\n",dp[i]);
	return 0;
}