rt,我机子上只需要 3s 就能跑出来啊
#include<bits/stdc++.h>
using namespace std;
const int N=2005,mod=998244353;
int n,m,ans,f[5][N][N>>2],g[N];
int fact[N],ifact[N];
int power(int a,int b)
{
int ans=1;
while (b) {
if (b&1) ans=1ll*ans*a%mod;
a=1ll*a*a%mod,b>>=1;
}
return ans;
}
void add(int &x,int y) {
x+=y; if (x>=mod) x-=mod;
}
int main()
{
scanf("%d%d",&n,&m),fact[0]=1;
for (int i=1;i<=n<<2;i++) fact[i]=1ll*fact[i-1]*i%mod;
ifact[n<<2]=power(fact[n<<2],mod-2);
for (int i=n<<2;i;i--) ifact[i-1]=1ll*ifact[i]*i%mod;
for (int i=0;i<=n;i++) f[1][i][i]=1ll*fact[n]*ifact[n-i]%mod;
for (int c=1;c<4;c++) for (int num=0;num<=n*c;num++) for (int x=0;x<=num/c;x++)
for (int i=0;i<=n;i++) add(f[c+1][num+i][min(x,i)],1ll*f[c][num][x]*fact[num+i]%mod*ifact[num]%mod*ifact[i]%mod*fact[n]%mod*ifact[n-i]%mod);
for (int i=1;i<=n<<2;i++) for (int j=0;j<=n;j++) add(g[i],f[4][i][j]);
ans=1ll*ifact[4]*fact[3]%mod;
for (int i=2;i<=n<<2;i++) {
int k=min(i-1,m),sum=0;
for (int j=0;j<=k/4;j++) add(sum,1ll*f[4][k][j]*(n-j)%mod);
add(ans,1ll*sum*power(g[k+1],mod-2)%mod);
}
printf("%d",ans);
return 0;
}