#include <stdio.h>
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <algorithm>

using ll = long long int;
const int INF = (1<<30);
const ll INFLL = (1ll<<60);
const int MX = 125001;

ll MOD;

#define l_ength size

void mul_mod(ll& a, ll b){
	a *= b;
	a %= MOD;
}

void add_mod(ll& a, ll b){
	a = (a<MOD)?a:(a-MOD);
	b = (b<MOD)?b:(b-MOD);
	a += b;
	a = (a<MOD)?a:(a-MOD);
}

ll dp[111][125001];

int main(void){
	int n,m,i,j,k;
	ll ans = 0ll;
	dp[0][0] = 1ll;
	scanf("%d%d%lld",&n,&m,&MOD);
	for(i=0; i<n; ++i){
		for(j=0; j<MX; ++j){
			if(!dp[i][j]){
				continue;
			}
			for(k=0; k<=m; ++k){
				if(j+(i+1)*k>=MX){
					break;
				}
				add_mod(dp[i+1][j+(i+1)*k],dp[i][j]);
			}
		}
	}
	for(i=1; i<=n; ++i){
		ans = 0ll;
		for(j=0; j<MX; ++j){
			add_mod(ans,dp[n-i][j]*dp[i-1][j]%MOD);
		}
		mul_mod(ans,(m+1));
		add_mod(ans,MOD-1);
		printf("%lld\n",ans);
	}
	return 0;
}

#include<bits/stdc++.h>

using namespace std;

#define ll long long

#define pb push_back

double dp[101][101][101];

double f(int a,int b,int c){

  if(dp[a][b][c]) return dp[a][b][c];

  if(a==100||b==100||c==100) return 0;

  double s=0;

  s+=(f(a+1,b,c)+1)*a/(a+b+c);

  s+=(f(a,b+1,c)+1)*b/(a+b+c);

  s+=(f(a,b,c+1)+1)*c/(a+b+c);

  dp[a][b][c]=s;

  return s;

}

int main(){

  string s;

  int a,b,c,d;

  cin>>a>>b>>c;

  cout<<fixed<<setprecision (12);

  cout<<f(a,b,c);}