#define MD 998244353 Comb comb; inline Modint cat(ll b){ return b&1?Modint():comb.fac(b)*comb.ifac((b>>1)+1)*comb.ifac(b>>1); } { ll@n,@q,@lr[2q],in[]; rep(j,q)++lr[2j+1]; sortA_index(2q,lr,in); unordered_mapm; ull b=0; ll x=0; Modint z=comb.fac(n/2)*comb.fac((n+1)/2); rep(j,2q){ ll i=in[j]; ll l=lr[j]; m[b]+=l-x; x=l; b^=1ull<<(i>>1); } m[0]+=n+(n&1)-x; for(auto t:m){ z*=cat(t.second); } wt(z); }