from collections import defaultdict def main(): import sys input = sys.stdin.read().split() N = int(input[0]) M = int(input[1]) current = defaultdict(lambda: defaultdict(int)) current[0][0] = 1 # Initial state: length 0, balance 0, inversion count 0 for step in range(2 * N): next_step = defaultdict(lambda: defaultdict(int)) for o in current: ks = current[o] for k in ks: cnt = ks[k] # Option 1: Add '0' new_o = o + 1 delta = (step - o) // 2 new_k = k + delta next_step[new_o][new_k] = (next_step[new_o][new_k] + cnt) % M # Option 2: Add '1' if possible if o > 0: new_o2 = o - 1 new_k2 = k next_step[new_o2][new_k2] = (next_step[new_o2][new_k2] + cnt) % M current = next_step # Collect results for balance 0 max_k = N * N result = [0] * (max_k + 1) if 0 in current: for k in current[0]: if k <= max_k: result[k] = current[0][k] % M for val in result: print(val % M) if __name__ == '__main__': main()