#if defined(_USE_PCH_)
#include "pch.hpp"
#else
#include <bits/stdc++.h>
#endif
#define RNG(V_, A_, B_, ...) for(int V_=(A_), V_##_END=(B_) __VA_OPT__(,) __VA_ARGS__; V_<=V_##_END; V_++)
#define IRNG(V_, A_, B_, ...) for(int V_=(A_), V_##_END=(B_) __VA_OPT__(,) __VA_ARGS__; V_>=V_##_END; V_--)
#ifdef _WIN32
#define long int64_t
#endif
#define fir first
#define sec second
#define _UN using namespace
using namespace std;
typedef pair<int,int> pii;
typedef __int128 i128;
const int MAXN=7010; const int INF=0x3f3f3f3f,MOD=998244353;
void addto(long& x,long y){ x=(x+y)%MOD; }
int n; vector<int> G[MAXN]; long ans[MAXN];
long fac[MAXN],inv[MAXN];
int dfs1(int u,int fa,pii& rt){
    int s=1,mx=0;
    for(int v:G[u]){
        if(v!=fa){ int x=dfs1(v,u,rt); s+=x,mx=max(mx,x); }
    }
    mx=max(mx,n-s);
    rt=min(rt,{mx,u});
    return s;
}
int siz[MAXN],bel[MAXN],fa[MAXN];
vector<int> vec[MAXN];
void dfs2(int u,int fa_){
    siz[u]=1,fa[u]=fa_;
    for(int v:G[u]){
        if(v!=fa_) bel[v]=bel[u]?bel[u]:v,dfs2(v,u),siz[u]+=siz[v];
    }
    vec[siz[u]].push_back(u);
}
long C(int x,int y){ return fac[x]*inv[y]%MOD*inv[x-y]%MOD; }
long qpow(long x,long p){
    long ret=1;
    for(; p; p>>=1,x=x*x%MOD){
        if(p&1) ret=ret*x%MOD;
    }
    return ret;
}
struct Poly{
    vector<long> A; int len;
    void init(int len_){ len=len_,A.resize(len+1); }
    void upd1(int a){ // *=y^a
        if(a>=0) memmove(A.data()+a,A.data(),(len+1-a)*sizeof(A[0])),fill(A.begin(),A.begin()+a,0);
        else a*=-1,memmove(A.data(),A.data()+a,(len+1-a)*sizeof(A[0])),fill(A.end()-a,A.end(),0);
    }
    void upd2(int a){ // *=(y^a-1)
        if(a>=0){
            IRNG(i,len,0){
                if(i+a<=len) addto(A[i+a],A[i]);
                A[i]=(MOD-A[i])%MOD;
            }
        }else{ // *=-(y^0+y^a+y^2a)
            a*=-1;
            RNG(i,0,len) A[i]=(MOD-A[i])%MOD;
            RNG(i,0,len){
                if(i+a<=len) addto(A[i+a],A[i]);
            }
        }
    }
    void add(const Poly& o,long x){
        assert(o.len<=len);
        RNG(i,0,o.len) addto(A[i],o.A[i]*x);
    }
    void substitute(long* f)const{
        RNG(i,0,len){
            RNG(j,0,i) addto(f[j],C(i,j)*A[i]);
        }
    }
    void dbg(){
        RNG(i,0,len) cerr<<A[i]<<" ";
        cerr<<"\n";
    }
};
Poly F[MAXN],H[MAXN];
int main(){
#if defined(_LOCAL_)
    freopen("in","r",stdin);
    freopen("out","w",stdout);
//  freopen("/dev/null","w",stderr);
#else
    freopen("tree.in","r",stdin);
    freopen("tree.out","w",stdout);
#endif
    ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
    cin>>n;
    RNG(_,1,n-1,u,v) cin>>u>>v,G[u].push_back(v),G[v].push_back(u);
    fac[0]=1;                  RNG(i,1,n) fac[i]=fac[i-1]*i%MOD;
    inv[n]=qpow(fac[n],MOD-2); IRNG(i,n-1,0) inv[i]=inv[i+1]*(i+1)%MOD;
    int rt;
    { pii x{INF,0}; dfs1(1,0,x); rt=x.sec; }
    dfs2(rt,0);
    RNG(u,1,n){
        if(u==rt) continue;
        RNG(i,1,siz[u]) addto(ans[i],siz[u]*C(siz[u]-1,i-1));
    }
    vector<int> tmp;
    F[rt].init(siz[rt]),F[rt].A[0]=1,F[rt].upd1(siz[rt]),H[rt].init(siz[rt]);
    for(int u:G[rt]) F[u].init(siz[u]),F[u].A[0]=1,F[u].upd1(siz[u]),H[u].init(siz[u]);
    RNG(i,1,n){
        vector<int> tmp2;
        for(int u:tmp){
            if(siz[fa[u]]<i){
                F[rt].upd2(-siz[u]),F[rt].upd1(siz[u]);
                F[bel[u]].upd2(-siz[u]),F[bel[u]].upd1(siz[u]);
            }else tmp2.push_back(u);
        }
        for(int u:vec[i-1]){
            F[rt].upd1(-siz[u]),F[rt].upd2(siz[u]);
            F[bel[u]].upd1(-siz[u]),F[bel[u]].upd2(siz[u]);
            tmp2.push_back(u);
        }
        tmp=move(tmp2);
        H[rt].add(F[rt],1);
        for(int u:G[rt]) H[u].add(F[u],1);
        cerr<<i<<"\n";
        F[rt].dbg();
        for(int u:G[rt]) F[u].dbg();
    }
    H[rt].dbg();
    for(int u:G[rt]) H[u].dbg();
    for(int u:G[rt]) H[rt].add(H[u],MOD-1);
    H[rt].dbg();
    H[rt].substitute(ans);
    RNG(i,1,n) cerr<<ans[i]<<" ";
    cerr<<"\n";
    RNG(i,1,n) ans[i]=ans[i]*qpow(C(n,i),MOD-2)%MOD;
    RNG(i,1,n) cout<<ans[i]<<"\n";
}