#define MD 998244353 Combc; ll@T; rep(T){ ll@n,@m,a[n]{}; rep(n){ ll@t; ++a[t]; } ll l=0,r=0,v=0,z=n; Mint y=1; rrep(t,n){ if(ll k=a[t]){ z-=k; if(z+r==t&&l<=t){ if(l==r&&z){ y*=2; } l+=k; v++; } else if(z+l==t&&r<=t){ r+=k; v++; } else if((l+r+k&1)==0 && (l+r+k>>1)+z==t){ y*=c.C(k,(l+r+k)/2-l); l=(l+r+k)/2,r=l; v+=2; } else{ y=0; } } } wt(y*c.C(m,v)); }