#include long long int modpow(long long int a, long long int n, long long int p) { long long int res = 1; for (; n > 0; n /= 2, a = a * a % p) if (n % 2 > 0) res = res * a % p; return res; } long long int n; void F(long long int a[55][55], long long int b[55][55], long long int c[55][55]) { const long long int p = 998244353; long long int i, j, k; long long int res[55][55]; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { res[i][j] = 0; for (k = 0; k < n; k++) res[i][j] += a[i][k] * b[k][j] % p; res[i][j] %= p; } } for (i = 0; i < n; i++) for (j = 0; j < n; j++) c[i][j] = res[i][j]; return; } long long int e[55][55]; long long int a[102][55][55]; int main() { long long int m; scanf("%lld %lld", &n, &m); long long int i, j; long long int u, v; for (i = 0; i < n; i++) for (j = 0; j < n; j++) e[i][j] = 0; for (i = 0; i < m; i++) { scanf("%lld %lld", &u, &v); u--; v--; e[u][v] = e[v][u] = 1; } long long int S, T, A, B; scanf("%lld %lld %lld %lld", &S, &T, &A, &B); S--; T--; A--; B--; const long long int p = 998244353; for (i = 0; i < n; i++) { v = 0; for (j = 0; j < n; j++) v += e[i][j]; v = modpow(v, p - 2, p); for (j = 0; j < n; j++) a[0][i][j] = e[i][j] * v; } for (i = 1; i < 102; i++) F(a[i - 1], a[i - 1], a[i]); long long int res[55][55]; for (i = 0; i < n; i++) for (j = 0; j < n; j++) res[i][j] = 0; res[0][0] = 1; for (i = 0; (S >> i) > 0; i++) if (((S >> i) & 1) > 0) F(res, a[i], res); long long int prob1 = res[0][A]; for (i = 0; i < n; i++) for (j = 0; j < n; j++) res[i][j] = 0; res[0][0] = 1; for (i = 0; (T >> i) > 0; i++) if (((T >> i) & 1) > 0) F(res, a[i], res); long long int prob2 = res[0][B]; T = S - T; for (i = 0; i < n; i++) for (j = 0; j < n; j++) res[i][j] = 0; res[B][B] = 1; for (i = 0; (T >> i) > 0; i++) if (((T >> i) & 1) > 0) F(res, a[i], res); long long int prob3 = res[B][A]; long long int ans = prob2 * prob3 % p * modpow(prob1, p - 2, p) % p; printf("%lld\n", ans); return 0; }