#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < n; i++)
#define rrep(i, n) for (int i = n - 1; i >= 0; i--)
using namespace std;
#define INF ((1<<30)-1)
#define LINF (1LL<<60)
#define EPS (1e-10)
typedef long long ll;
typedef pair<ll, ll> P;
const int MOD = 1000000007;
const int MOD2 = 998244353;

ll dp[101][1000010];

int main(){
    int n, k;
    ll m;
    cin >> n >> k >> m;

    dp[0][0] = 1;

    for(int i = 1; i <= n; i++){
        ll tmp[i+1] = {};
        rep(j, 1000010){
            int x = j % i;
            tmp[x] += dp[i-1][j];
            if (j - i*(k+1) >= 0) {
                tmp[x] += m - dp[i-1][j-i*(k+1)];
                tmp[x] %= m;
            }
            dp[i][j] = tmp[x];
            dp[i][j] %= m;
        }
    }
    
    for(int i = 1; i <= n; i++){
        ll res = 0;
        rep(j, 1000010) {
            res += (dp[i-1][j] * dp[n-i][j])%m;
            res %= m;
        }
        res *= k + 1;
        res += m - 1;
        res %= m;
        cout << res << endl;
    }

    return 0;
}

#include <bits/stdc++.h>
#define LL long long
#define PII pair<int, int>
#define PLL pair<LL, LL>
#define all_of(v) (v).begin(), (v).end()
#define sort_unique(c) (sort(c.begin(),c.end()), c.resize(distance(c.begin(),unique(c.begin(),c.end()))))
#define fi first
#define se second
const int MAXN = 101;
//const LL INF = (LL) 1e9 + 8763;
//const LL MOD = (LL) 1e9 + 7;
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

int n, mod, k, ans[MAXN], dp[MAXN][MAXN*MAXN*MAXN];

inline int add(int x, int y) {
	int sum = x + y;
	if (sum >= mod) sum -= mod;
	return sum;
}

void solve() {
	cin >> n >> k >> mod;
	
	int bound = n * (n + 1) / 2 * k;
	dp[0][0] = 1;
	for (int i = 1; i <= n; i++) {
		for (int r = 0; r < i; r++) {
			int sum = 0;
			for (int j = r; j <= bound; j += i) {
				sum = add(sum, dp[i - 1][j]);
				if (j - (k + 1) * i >= 0) {
					sum = add(sum, -dp[i - 1][j - (k + 1) * i] + mod);
				}
				dp[i][j] = sum;
			}
		}
	}
	
	for (int i = 1; i <= n; i++) {
		int a = i - 1, b = n - i;
		for (int j = 0; j <= bound; j++) {
//			cout << "At " << i << ' ' << j << " -> " << dp[a][j] << ' ' << dp[b][j] << '\n';
			if (dp[a][j] == 0 || dp[b][j] == 0) continue;
			ans[i] = (ans[i] + (LL) dp[a][j] * dp[b][j] % mod * (k + 1) % mod) % mod;
		}
		ans[i] = (ans[i] - 1 + mod) % mod;
	}
	
	for (int i = 1; i <= n; i++) {
		cout << ans[i] << "\n";
	}
}

int main() {
	ios_base::sync_with_stdio(0); cin.tie(0);

	int tc = 1;
//	cin >> tc;
	for (int i = 1; i <= tc; i++) {
		solve();
	}

	return 0;
} 