有无人帮忙拍下,玄关
#include<bits/stdc++.h>
#define ll long long
#define reg register
#define db double
#define il inline
#define int long long
using namespace std;
//void read(int &x){x=0;int f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}x*=f;}
void read(ll &x){x=0;int f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}x*=f;}
const int N=5e5+5,mod=998244353;
ll n,m,siz[N],deep[N],mark[N],sum_mark[N],rt,tmp;
ll book[N];
vector<int>g[N];
ll dp[N];
ll qpow(ll x,int y){
ll re=1;
while(y){
if(y&1)re=re*x%mod;x=x*x%mod;y/=2;
}return re;
}
void dfs1(int x,int fa){
deep[x]=deep[fa]+1;
if(mark[x])sum_mark[x]=1;siz[x]=1;
for(int i:g[x]){
if(i==fa)continue;if(i==1)continue;
dfs1(i,x);sum_mark[x]+=sum_mark[i];siz[x]+=siz[i]; book[x]+=sum_mark[i]*siz[i]%mod;book[x]%=mod;
}
if(mark[x])book[x]+=siz[x];book[x]%=mod;
}
void dfs2(int x,int fa,int from){
if(mark[x]){
dp[rt]+=deep[x]-1;dp[rt]+=(siz[from]-deep[x]+1)*qpow(2,mod-2)%mod;dp[rt]%=mod;
}
for(int i:g[x]){
if(i==fa)continue;if(i==1)continue;
if(x==rt)
dfs2(i,x,i);
else dfs2(i,x,from);
}
}
void dfs3(int x,int fa){
for(int i:g[x]){
if(i==fa)continue;if(i==1)continue;
dp[i]=dp[x]+(tmp-sum_mark[i])+((n-1-siz[i]-1)*(tmp-sum_mark[i])%mod-(book[x]-sum_mark[i]*siz[i]%mod-mark[x]*siz[x]%mod)%mod-(tmp-sum_mark[x])*(n-1-siz[x])%mod)%mod*qpow(2,mod-2)%mod;
// if(i==3)cout<<dp[3]<<endl;
dp[i]-=sum_mark[i]-mod+(siz[i]*sum_mark[i]%mod-book[i]+mod)%mod*qpow(2,mod-2)%mod;
// if(i==5)cout<<sum_mark[i]+(siz[i]*sum_mark[i]%mod-book[i]+mod)%mod*qpow(2,mod-2)%mod<<endl;
dp[i]%=mod;dp[i]+=mod;dp[i]%=mod;
dfs3(i,x);
}
}
signed main(){
read(n);read(m);
for(int u,v,i=1;i<=m;i++){
read(u);read(v);g[u].push_back(v);g[v].push_back(u);
}
for(int i:g[1])mark[i]=1;
rt=g[1][0];dfs1(rt,1);tmp=g[1].size();
dfs2(rt,1,0);
// cout<<dp[rt]<<endl;
dfs3(rt,1);
dp[1]--;
cout<<1<<' ';
for(int i=2;i<=n;i++)cout<<qpow(tmp,mod-2)*(dp[i])%mod+2<<' ';
return 0;
}