#include<iostream>
#include<vector>
#define ll long long
#define pb push_back
#define rep(i,n) for(int i=0;i<n;i++)
using namespace std;
int m,n;
vector<int> ed[100005];
ll dp[100005];
ll res[100005];
ll int dfs(int i,int p){
	for(int j:ed[i]){
		if(p==j)continue;
		dp[i]=(dp[i]*(dfs(j,i)+1ll))%m;
	}
	return dp[i];
}
void dfs1(int i,int p,ll pre){
	res[i]=(dp[i]*(pre+1ll))%m;
	//cout<<res[p]<<" "<<dp[i]<<" "<<res[i]<<"\n";
	int l=ed[i].size();
	ll lt[l],rt[l];
	ll int c=1;
	for(int j=0;j<l;j++){
		if(ed[i][j]==p)c=(c*(pre+1ll))%m;
		else c=(c*(dp[ed[i][j]]+1ll))%m;
		lt[j]=c;
	}
	c=1;
	for(int j=l-1;j>=0;j--){
		if(ed[i][j]==p)c=(c*(pre+1ll))%m;
		else c=(c*(dp[ed[i][j]]+1ll))%m;
		rt[j]=c;
	}
	for(int j1=0;j1<l;j1++){
		int j=ed[i][j1];
		if(j==p)continue;
		ll a,b;
		if(j1==0)a=1;
		else a=(lt[j1-1]);
		if(j1==l-1)b=1;
		else b=rt[j1+1];
		ll tmp=(a*b)%m;
		dfs1(j,i,tmp);
	}
}
int main()
{
	cin>>n>>m;
	rep(i,n-1){
		int u,v;
		cin>>u>>v;
		u--,v--;
		ed[u].pb(v);
		ed[v].pb(u);
	}
	rep(i,n)dp[i]=1ll;
	dfs(0,-1);
	dfs1(0,-1,0);
	rep(i,n)cout<<res[i]<<"\n";
}