#include using namespace std; const int mod=998244353,xn=105,xd=120; int T,s,a[xn],d,b[xd],dp[xd][xn][xn],ans,pd[xd][xn]; templateinline void read(T &n){ T w=1;n=0;char ch=getchar(); while(!isdigit(ch)&&ch!=EOF){if(ch=='-')w=-1;ch=getchar();} while(isdigit(ch)&&ch!=EOF)n=(n<<1)+(n<<3)+(ch&15),ch=getchar(); n*=w; } int main(){ ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); read(T); while(T--){ read(s),d=0;for(int g=1;g<=s;g++)read(a[g]),d=max(d,a[g]);d+=10; for(int g=0;g<=d;g++)b[g]=0;for(int g=1;g<=s;g++)b[a[g]]++; for(int g=0;g<=d+1;g++)for(int h=0;h<=s;h++)for(int j=0;j<=s;j++)dp[g][h][j]=0;dp[d+1][0][0]=1; for(int g=d;g;g--)for(int h=0;h*(g+1)<=s;h++)for(int j=0;j<=s;j++)if(dp[g+1][h][j]) for(int v=0;v+h<=b[g]||(v+2*h-b[g])*g<=s-b[g];v++){ int e=max(h,v+2*h-b[g]),r=j+max(b[g]-v-h,0); dp[g][e][r]=(dp[g][e][r]+dp[g+1][h][j])%mod; } ans=0; for(int h=0;h<=s;h++)for(int j=0;j<=s;j++)if(dp[1][h][j]&&j+b[0]>=h){ int e=j+b[0]-h;ans=(ans+1ll*(e+1)*dp[1][h][j])%mod; } for(int g=0;g<=d+1;g++)for(int h=0;h<=s;h++)pd[g][h]=0;pd[d+1][0]=1;int ki=0; for(int g=d;g>=0;g--){ for(int h=ki;h>=0;h--)for(int j=0;j<=b[g];j++)pd[g][h+j]=(pd[g][h+j]+pd[g+1][h])%mod; ki+=b[g]; } int kp=0,kl=b[0]; for(int g=1;g<=d;g++){ if(b[g]){ int kk=0;int lo=1,lp=0;bool t=1; for(int h=g-1;h;h--){ lp+=max(0,b[h]-lo); lo=max(lo,lo+lo-b[h]); if(lo>=10*s){t=0;break;} } if(t){ lp+=b[0]; int e=s-kl+1+lp-lo; for(int h=0;h<=min(e,s);h++)kk=(1ll*kk+pd[g][h]+mod-pd[g+1][h])%mod;kp=(kp+kk)%mod; } } kl+=b[g]; } int ko=1;for(int g=1;g<=d;g++)ko=1ll*ko*(b[g]+1)%mod; if(!b[0]&&!b[1])kp=(kp+1)%mod;ans=(1ll*ans+kp+mod-ko)%mod; cout<