n, MOD = map(int, input().split()) def f(o, z, t): return (o * (n + 1) + z) * (n * n + 1) + t dp = {0:1} for _ in range(2 * n): nex = {} for k, v in dp.items(): t = k % (n * n + 1) k //= (n * n + 1) z = k % (n + 1) o = k // (n + 1) if z < n: nex[f(o, z + 1, t + o)] = (nex.get(f(o, z + 1, t + o), 0) + v) % MOD if o < z: nex[f(o + 1, z, t)] = (nex.get(f(o + 1, z, t), 0) + v) % MOD dp = nex for i in range(n * n + 1): print(dp.get(f(n, n, i), 0))