#include <bits/stdc++.h>
using namespace std;
#define deb(k) cerr << #k << ": " << k << "\n";
#define size(a) (int)a.size()
#define fastcin cin.tie(0)->sync_with_stdio(0);
#define st first
#define nd second
#define pb push_back
#define mk make_pair
#define int long long
typedef long double ldbl;
typedef double dbl;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef map<int, int> mii;
typedef vector<int> vint;
#define MAXN 300100
#define MAXLG 20
const int inf = 0x3f3f3f3f;
//const ll mod = 1000000007;
const ll linf = 0x3f3f3f3f3f3f3f3f;
const int N = 300100;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

int n, k, mod;
int dp[110][1000010];
void solve(){
	cin>>n>>k>>mod;
	dp[0][0] = 1;
	int s = 0;
	for(int i=1;i<=n;i++){
		vint cnt(i);
		s += i;
		for(int j=0;j<=s*k;j++){
			int r = j % i;
			cnt[r] += dp[i-1][j];
			if(j - i*(k+1) >= 0) cnt[r] -= dp[i-1][j - i*(k+1)];
			cnt[r] = (cnt[r]%mod + mod)%mod;
			dp[i][j] = cnt[r];
		}
	}
	s = 0;
	for(int i=1;i<=n;i++){
		s += i;
		int ans = 0;
		for(int j=0;j<=s*k;j++){
			ans += dp[i-1][j] * dp[n-i][j];
			ans %= mod;
		}
		ans = ans * (k+1) + mod - 1;
		ans %= mod;
		cout<<ans<<"\n";
	}




	// Have you read the problem again?
	// Maybe you understood the wrong problem
}

int32_t main(){
	fastcin;
	int t_ = 1;
	//cin>>t_;
	while(t_--)
		solve();
	return 0;
}

#include<bits/stdc++.h>
using namespace std;

int main(){
  vector<vector<vector<long double>>> DP(101,vector<vector<long double>>(101,vector<long double>(101,0)));
  cout << fixed << setprecision(10);
  long double A,B,C;
  cin >> A >> B >> C;
  for(long double i=99;i>=A;i--){
    for(long double j=99;j>=B;j--){
      for(long double k=99;k>=C;k--){
        DP[i][j][k] += (DP[i+1][j][k]+1)*(i/(i+j+k));
        DP[i][j][k] += (DP[i][j+1][k]+1)*(j/(i+j+k));
        DP[i][j][k] += (DP[i][j][k+1]+1)*(k/(i+j+k));
      }
    }
  }
  cout << DP[A][B][C] << endl;
}