#include<cstdio>
typedef long long LL;
int main()
{
int nn,kk,pp,i,h,x,n;
LL j[1002][12]={},d[1002][12]={};
int bin[1001][1001]={};
scanf("%d%d%d",&nn,&kk,&pp);
if(kk>10)
{
printf("0\n");
return 0;
}
for(i=0;i<11;++i)
j[0][i]=d[0][i]=1;
for(i=0;i<=1000;++i)
bin[i][0]=1;
for(i=1;i<=nn;++i)
for(h=1;h<=i;++h)
{
bin[i][h]=bin[i-1][h]+bin[i-1][h-1];
if(bin[i][h]>=pp)
bin[i][h]-=pp;
}
for(x=1;x<=nn;++x)
{
for(n=1;n<11;++n)
{
for(i=0;i<x;++i)
{
// z[x][n]+=j[i][n]*1LL*j[x-1-i][n]%pp*bin[x-1][i]%pp;
j[x][n]+=d[i][n-1]*j[x-1-i][n]%pp*bin[x-1][i];
d[x][n]+=(d[i][n-1]*d[x-1-i][n]+(d[i][n]-d[i][n-1])*d[x-1-i][n-1])%pp*bin[x-1][i];
j[x][n]%=pp;
d[x][n]%=pp;
}
}
}
LL res=0,rb=0;
for(i=0;i<nn;++i)
{
res+=j[i][kk]*j[nn-1-i][kk]%pp*bin[nn-1][i];
res%=pp;
}
--kk;
for(i=0;i<nn;++i)
{
rb+=j[i][kk]*1LL*j[nn-1-i][kk]%pp*bin[nn-1][i]%pp;
if(rb>pp)
rb-=pp;
}
res-=rb;
if(res<0)
res+=pp;
printf("%lld\n",res);
/* puts("z");
for(x=0;x<6;++x)
{
for(n=0;n<4;++n)
printf("%d ",z[x][n]);
printf("\n");
}
puts("j");
for(x=0;x<6;++x)
{
for(n=0;n<4;++n)
printf("%d ",j[x][n]);
printf("\n");
}
puts("d");
for(x=0;x<6;++x)
{
for(n=0;n<4;++n)
printf("%d ",d[x][n]);
printf("\n");
}
printf("%d",z[5][3]-z[5][2]);*/
}