#include using namespace std; const int mod=998244353; int test,n,a[1111],num[1111],dp[1111],ans,c[1111][1111],fp[1111],all,jc[1111]; int binpow(int a,int t) { int res=1,p=a; for (int i=t;i;i>>=1) { if (i&1) res=1ll*res*p%mod; p=1ll*p*p%mod; } return res; } void Init() { c[0][0]=1; for (int i=1;i<=1000;i++) { c[i][0]=1; for (int j=1;j<=i;j++) { c[i][j]=c[i-1][j]+c[i-1][j-1]; if (c[i][j]>=mod) c[i][j]-=mod; } } jc[0]=1; for (int i=1;i<=1000;i++) jc[i]=1ll*jc[i-1]*i%mod; } int C(int n,int m) { if (n=0 && j>=i-2*x;j--) { fp[j]=(1ll*dp[i]*F(i-j,n-all-i,x)+fp[j])%mod; } } for (int i=0;i<=n;i++) dp[i]=fp[i]; } int main() { scanf("%d",&test); Init(); while(test--) { scanf("%d",&n); for (int i=1;i<=n;i++) { scanf("%d",&a[i]); } memset(num,0,sizeof(num)); for (int i=1;i<=n;i++) num[a[i]]++; memset(dp,0,sizeof(dp));dp[n]=1;all=0; for (int i=1;i<=n;i++) { trans(num[i]); all+=num[i]; } ans=0; for (int i=0;i<=n;i++) ans=(ans+dp[i])%mod; for (int i=1;i<=n;i++) ans=1ll*ans*jc[num[i]]%mod; printf("%d\n",ans); } return 0; }