N,M,X=list(map(int,input().split())) path=[] for i in range(10): path.append([0]*10) for i in range(M): u,v=list(map(int,input().split())) u-=1 v-=1 if u==v: path[u][v]+=1 else: path[u][v]+=1 path[v][u]+=1 MOD=998244353 def gen_matrix(): A=[] for i in range(110): A.append([0]*110) for j in range(110): prev=j//10 now=j%10 if prev!=10: if path[prev][now]==0: continue B=sum(path[now])-1 if B==0: A[100+now][j]=1 continue else: Binv=pow(B,MOD-2,MOD) for i in range(10): A[now*10+i][j]=(Binv*(path[i][now]-1*(prev==i)))%MOD else: B=sum(path[now]) if B==0: A[j][j]=1 continue else: Binv=pow(B,MOD-2,MOD) for i in range(10): A[now*10+i][j]=(Binv*path[i][now])%MOD return A A=gen_matrix() def matrixfact(A,n,X,M): P=A.copy() X=bin(X) X=X[2:] check=1 for q in range(1,len(X)): B=[] for i in range(n): B.append([0]*n) for i in range(n): for j in range(n): for k in range(n): B[i][j]+=(A[i][k]*A[k][j])%M B[i][j]=B[i][j]%M check*=2 if X[q]=="1": C=[] for i in range(n): C.append([0]*n) for i in range(n): for j in range(n): for k in range(n): C[i][j]+=(B[i][k]*P[k][j])%M C[i][j]=C[i][j]%M check+=1 A=C.copy() else: A=B.copy() #print(check) return A #print(A[2]) #print(path) M=matrixfact(A,110,X,MOD) for i in range(N): ans=0 for j in range(11): ans=(ans+M[10*j+i][100])%MOD print(ans)