#define MD 998244353 ll@n,p=0,s=0,b=0,v=0,m[2]{},t[2][1010]{}; rep(n){ ll@a; s+=a; b=a-b; t[p][m[p]]+=b+1>>1; t[p^1][m[p^1]]+=b>>1; p^=~b&1; m[p^1]+=1; b=a; } Mint z=1; rep(k,2){ ll s=0,u=0,a[1010]{}; rep(i,m[k]){ v+=u+=t[k][i]; rrep(j,u){ z*=++a[j]+u-j-1; } } } z=(2v==s)/z; rep(i,v){ z*=i+1; } wt(z);