def m(S,T):L=len(S);return[[sum(s[j]*T[j][k]for j in R(L))%P for k in R(L)]for s in S] def p(T,n): L=len(T);a=[[i==j for j in R(L)]for i in R(L)] while n: if n&1:a=m(a,T) T=m(T,T);n>>=1 return a R=range J=lambda:map(int,input().split()) N,M=J() E=[[]for i in R(N)] for j in R(M):u,v=J();E[u-1]+=[v-1];E[v-1]+=[u-1] C=[[0]*N for i in R(N)] P=998244353 for i in R(N): r=pow(len(E[i]),-1,P) for j in E[i]:C[i][j]=r S,T,A,B=J() v=p(C,T-1)[0] C=p(C,S-T) print(v[B-1]*C[B-1][A-1]*pow(sum(v[i]*C[i][A-1]for i in R(N)),-1,P)%P)