mod = 998244353 g = 3 ginv = 332748118 W = [pow(g, (mod-1)>>i, mod) for i in range(24)] Winv = [pow(ginv, (mod-1)>>i, mod) for i in range(24)] def fft(k,f): for l in range(k,0,-1): d = 1 << l - 1 U = [1] for i in range(d): U.append(U[-1]*W[l]%mod) for i in range(1< 1: ncalA = [] if len(calA) & 1: ncalA.append(calA.pop()) for i in range(0,len(calA)//2): ncalA.append(convolution(calA[2*i],calA[2*i+1])) calA = ncalA dp = calA[0] for b in B: print(dp[b])