#include #include using namespace std; template struct Matrix{ array,N> val; Matrix(){ for (int i=0;i &operator[](int i){return val[i];} const array &operator[](int i)const{return val[i];} Matrix operator*(const Matrix &b){ Matrix a=*this,c; for (int i=0;i0){ if (k%2==1) ret=ret*m; m=m*m; k/=2; } return ret; } }; int main(){ using ll=long long; using mint=atcoder::modint998244353; using mat=Matrix; int n,m; cin>>n>>m; vector d(n); vector> g(n); for (int i=0;i>u>>v; u--;v--; d[u]++; d[v]++; g[u].push_back(v); g[v].push_back(u); } mat one; for (int v=0;v>s>>t>>a>>b; a--;b--; mint ans=(f(0,b,t-1)*f(b,a,s-t))/f(0,a,s-1); cout<