#include #include using mint = atcoder::static_modint<998244353>; //using mint = atcoder::static_modint<1000000007>; using namespace std; using namespace atcoder; using ld = long double; using ll = long long; #define mp(a,b) make_pair(a,b) #define rep(i,s,n) for(int i=s; i dx{1,0,-1,0},dy{0,1,0,-1}; vector> arrayproduct(vector>&X,vector>&Y){ vector> output(121,vector(121,0)); rep(i,0,121)rep(j,0,121){ rep(k,0,121)output[i][j]+=X[i][k]*Y[k][j]; } return output; } vector> arraypower(vector>&X,int z){ if(z==1)return X; int half=z/2; auto H=arraypower(X,half); auto U=arrayproduct(H,H); if(z%2==0)return U; else return arrayproduct(U,X); } int main(){ vector> A(121,vector(121,0)); int n,m,x; cin >> n >> m >> x; vector> G(11,vector(11,0)); rep(i,0,m){ int u,v; cin >> u >> v; G[u][v]++; if(u!=v)G[v][u]++; } // rep(i,0,11){ // rep(j,0,11)cout << G[i][j] << " "; // cout << "\n"; // } mint h=0; rep(i,0,n+1)h+=G[1][i]; if(h==0){ cout << 1 << "\n"; rep(i,1,n)cout << 0 << "\n"; return 0; } h=h.inv(); rep(j,1,n+1){ auto v=G[j]; int s=accumulate(v.begin(),v.end(),0); if(s==1){ int p=0; rep(i,0,11)if(G[i][j])p=i; A[p*11+j][j*11+j]=1; A[j*11+j][j*11+p]=1; } else{ s--; mint h=mint(s).inv(); rep(i,1,11)if(G[i][j]){ v[i]--; rep(k,1,11)A[i*11+j][j*11+k]=v[k]*h; v[i]++; } } } rep(i,1,n+1)A[1][11+i]=h*G[1][i]; // rep(i,0,4)rep(j,0,4){ // mint s=0; // //rep(k,0,4)rep(l,0,4)cout << A[i*11+j][k*11+l].val() << " "; // cout << "\n"; // rep(k,0,4)rep(l,0,4)s+=A[i*11+j][k*11+l]; // cout << s.val(); // } auto P=arraypower(A,x); rep(i,1,n+1){ mint ans=0; rep(j,0,n+1)ans+=P[1][j*11+i]; cout << ans.val() << "\n"; } }