#include #define MOD 998244353 using namespace std; typedef long long ll; ll C[1005][1005],facd[1005]; void pre() { for(int i=0;i<=1000;i++) C[i][0]=1; for(int i=1;i<=1000;i++) for(int j=1;j<=i;j++) C[i][j]=(C[i-1][j-1]+C[i-1][j])%MOD; facd[0]=1; for(int i=1;i<=1000;i++) facd[i]=facd[i-1]*i%MOD; } inline void update(int &x,ll y) { x=(x+y)%MOD; } int a[1005],b[1005]; int f[1005][1005]; int dp(int n) { sort(a+1,a+n+1); int s=0,cnt=0; for(int i=1;i<=n;i++) { s++; if (a[i]!=a[i+1]||i==n) { b[++cnt]=s; s=0; } } f[0][0]=1; s=0; ll v=1; for(int i=1;i<=cnt;i++) { memset(f[i],0,sizeof(f[i])); int u=b[i]; for(int j=0;j<=s;j++) if (f[i-1][j]) { for(int k=0;k<=j&&k<=u;k++) update(f[i][j+u-(k<<1)],f[i-1][j]*C[j][k]); } s+=u; v=v*facd[u]%MOD; } int ans=0; for(int i=0;i<=n;i++) update(ans,f[cnt][i]); return ans*v%MOD; } int main() { pre(); int cases; scanf("%d",&cases); for(;cases;cases--) { int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); printf("%d\n",dp(n)); } return 0; }