#include <algorithm>
#include <bitset>
#include <cassert>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <vector>
#define m_p make_pair
#define sz(x) (int)x.size()
#define line cerr<<"--------------------\n";
#define see(x) cerr<<x<<" "
#define seeln(x) cerr<<x<<endl
#define out(x) cerr<<#x<<" = "<<x<<" "
#define outln(x) cerr<<#x<<" = "<<x<<endl
#define outarr(x,l,r) cerr<<#x"["<<l<<"-"<<r<<"] = "; for (int _i=l;_i<=r;++_i) cerr<<x[_i]<<" ";cerr<<endl;
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
#define gc() getchar()
//char buf[1<<23],*p1=buf,*p2=buf;
//#define gc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
template <class T> void read(T &x)
{
    x=0; char c=gc(); int flag=0;
    while (c<'0'||c>'9') flag|=(c=='-'),c=gc();
    while (c>='0'&&c<='9') x=(x<<3)+(x<<1)+(c^48),c=gc();
    if (flag) x=-x;
}
template <class T> inline T _max(T a,T b){return a>b ? a : b;}
template <class T> inline T _min(T a,T b){return a<b ? a : b;}
template <class T> inline bool checkmax(T &a,T b){return b>a ? a=b,1 : 0;}
template <class T> inline bool checkmin(T &a,T b){return b<a ? a=b,1 : 0;}
int n,k,mod;
int Add(int x,int y){x+=y; return x>=mod ? x-mod : x;}
int Sub(int x,int y){x-=y; return x<0 ? x+mod : x;}
int Mul(int x,int y){return (ll)x*y%mod;}
void add(int &x,int y){x=Add(x,y);}
void sub(int &x,int y){x=Sub(x,y);}
void mul(int &x,int y){x=Mul(x,y);}
int dp[102][128000];
void init()
{
	read(n); read(k); read(mod);
	dp[0][0]=1;
	for (int i=1;i<=n;++i)
	{
		int tmp=_min(i,50);
		for (int r=0;r<=k;++r)
		{
			for (int j=r*i;j<=tmp*(tmp+1)/2*k;++j)
			{
				add(dp[i][j],dp[i-1][j-r*i]);
			}
		}
	}
}

int calc(int x)
{
	int tmp=_min(x-1,n-x);
	int ans=0;
	for (int i=0;i<=tmp*(tmp+1)/2*k;++i)
	{
		if (i) add(ans,Mul(Mul(dp[x-1][i],dp[n-x][i]),k+1));
		else add(ans,k);
	}
	return ans;
}

void solve()
{
	for (int i=1;i<=n;++i)
	{
		printf("%d\n",calc(i));
	}
}

int main()
{
	init();
	solve();
	return 0;
}

#include<cstdio>
#include<cstring>
#define fo(x,a,b) for(int x=(a),_e=(b);x<=_e;x++)
#define fd(x,a,b) for(int x=(a),_e=(b);x>=_e;x--)
#define inc(a,b) (a=a+b-(a+b>=mo?mo:0))
#define ww printf
#define min(a,b) ((a)<(b)?(a):(b))

const int N=550006;
int f[101][N],top[101],n,ti,mo;
int main(){
	scanf("%d %d %d",&n,&ti,&mo);
	f[0][0]=1;
	fo(i,1,n) {
		memcpy(f[i],f[i-1],sizeof(f[i-1][0])*(top[i-1]+1));
		top[i]=top[i-1];
		fd(k,top[i],0) {
			fo(j,1,ti) inc(f[i][k+j*i],f[i][k]);
		}top[i]+=ti*i;
//		fo(j,0,top[i]) ww("%d ",f[i][j]);puts(""); 
	}
	
	long long ans;
	fo(i,1,n) {
		ans=0;
		fo(j,0,min(top[i-1],top[n-i])) ans+=1ll*f[i-1][j]*f[n-i][j]%mo*(ti+1)%mo;
		ans=(ans+mo-1)%mo;
		printf("%lld\n",ans);
	}
	return 0;
}
