#define MD 998244353
Comb<Mint>c;
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));
}