#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#define N 103
#define NN 128000
template <typename T> inline void read(T &x) {
	x = 0; char c = getchar(); bool flag = false;
	while (!isdigit(c)) { if (c == '-')	flag = true; c = getchar(); }
	while (isdigit(c)) { x = (x << 1) + (x << 3) + (c ^ 48); c = getchar(); }
	if (flag)	x = -x;
}
using namespace std;
int n, K, P;
int ans[N], lmt[N];
int f[N][NN], sum[NN];
inline void work() {
	f[0][0] = 1;
	for (int i = 1; i < n; ++i) {
		int up = lmt[n >> 1];
		for (int j = 0; j <= up; ++j) {
			if (j - i >= 0)	sum[j] = (sum[j - i] + f[i - 1][j]) % P;
			else	sum[j] = f[i - 1][j];
		}
		for (int j = 0; j <= up; ++j) {
			if (j - (K+1) * i < 0)	f[i][j] = sum[j];
			else	f[i][j] = (sum[j] - sum[j - (K+1) * i] + P) % P;
		}
	}
}
int main() {
	read(n), read(K), read(P);
	for (int i = 1; i <= n >> 1; ++i)	lmt[i] = lmt[i - 1] + K * i;
	work();
	for (int i = 1; i <= n - i + 1; ++i) {
		for (int j = 0; j <= NN - 100; ++j) 
			ans[i] = (ans[i] + 1ll * f[i - 1][j] * f[n - i][j]) % P;
		ans[i] = (1ll * ans[i] * (K + 1) - 1) % P;
		ans[n - i + 1] = ans[i];
	}
	for (int i = 1; i <= n; ++i)	printf("%d\n", (ans[i] % P + P) % P);
	return 0;
}


/*
3 1 998244353
//1 3 1

10 8 861271909

100 100 7
*/
#include<bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i++)
using namespace std;

int main(){
    int N, K, M, MAX = 50 * 51 * 100 / 2;
    cin >> N >> K >> M;
    long dp[N][MAX];
    rep(i, N){
        if(!i){
            fill(dp[i], dp[i] + K + 1, 1);
            fill(dp[i] + K + 1, dp[i] + MAX, 0);
        }else{
            rep(j, MAX){
                if(0 <= j && j < i + 1) dp[i][j] = dp[i - 1][j];
                else if(i + 1 <= j && j < (i + 1) * (K + 1)) dp[i][j] = (dp[i][j - i - 1] + dp[i - 1][j]) % M;
                else dp[i][j] = ((dp[i][j - i - 1] + dp[i - 1][j]) % M + (M - dp[i - 1][j - (i + 1) * (K + 1)]) % M) % M;
            }
        }
    }
    rep(i, N){
        if(!i || !(N - 1 - i)) cout << K << endl;
        else{
            long ans = 0;
            rep(j, MAX) ans = (ans + (dp[i - 1][j] * dp[N - 2 - i][j]) % M) % M;
            ans = (ans * (K + 1) - 1) % M;
            cout << ans << endl;
        }
    }
    return 0;
}