I found an interesting problem on https://atcoder.jp/contests/arc104/tasks/arc104_d:
Given positive integers N, K and M, solve the following problem for every integer x between 1 and N (inclusive):
 - Find the number, modulo M, of non-empty multisets containing between 0 and K (inclusive) instances of each of the integers 1, 2, 3 \cdots, N such that the average of the elements is x.

-----Constraints-----
 - 1 \leq N, K \leq 100
 - 10^8 \leq M \leq 10^9 + 9
 - M is prime.
 - All values in input are integers.

-----Input-----
Input is given from Standard Input in the following format:
N K M

-----Output-----
Use the following format:
c_1
c_2
:
c_N

Here, c_x should be the number, modulo M, of multisets such that the average of the elements is x.

-----Sample Input-----
3 1 998244353

-----Sample Output-----
1
3
1

Consider non-empty multisets containing between 0 and 1 instance(s) of each of the integers between 1 and 3. Among them, there are:
 - one multiset such that the average of the elements is k = 1: \{1\};
 - three multisets such that the average of the elements is k = 2: \{2\}, \{1, 3\}, \{1, 2, 3\};
 - one multiset such that the average of the elements is k = 3: \{3\}.

I tried it in Python, but could not do it. Can you solve it?
import sys
readline = sys.stdin.readline

N, K, MOD = list(map(int, readline().split()))

MAX = K*(N//2)*(N//2+1)//2+1


table = [[1]]

for idx in range(1, N+1):
    dp = table[-1]
    dp2 = dp + [0]*(idx*(K+1))
    s = idx*(K+1)
    for i in range(min(len(dp), len(dp2)-s)):
        dp2[i+s] = (dp2[i+s] + -dp[i])%MOD
    for i in range(len(dp2)-idx):
        dp2[i+idx] = (dp2[i+idx]+dp2[i])%MOD
    
    if len(dp2) > MAX:
        dp2 = dp2[:MAX]
    table.append(dp2)

Ans = [None]*(N+1)
for x in range(1, N+1):
    if N-x < x:
        Ans[x] = Ans[N+1-x]
    ans = 0
    for i in range(min(len(table[x-1]), len(table[N-x]))):
        ans = (ans + table[x-1][i]*table[N-x][i])%MOD
    ans = (ans*(K+1)-1)%MOD
    Ans[x] = ans
print(('\n'.join(map(str, Ans[1:]))))