#include <bits/stdc++.h>
using namespace std;
const int N = 205;
int n, d, M;
int C[N][N], f[N][N], sum[N][N];
int add(int a, int b) {
  long long x = (long long)a + b;
  if (x >= M) return x - M;
  return x;
}
inline void init() { scanf("%d%d%d", &n, &d, &M); }
inline void solve() {
  C[0][0] = 1;
  for (int i = 1; i <= n; i++) {
    C[i][0] = C[i][i] = 1;
    for (int j = 1; j < i; j++) C[i][j] = add(C[i - 1][j - 1], C[i - 1][j]);
  }
  f[1][0] = 1;
  for (int i = 0; i <= d; i++) sum[1][i] = 1;
  for (int i = 2; i <= n; i++) {
    for (int j = 1; j < i && j <= d; j++)
      for (int k = 1; k < i; k++)
        f[i][j] = add(f[i][j], sum[k][d - 1] * 1ll * C[i - 2][k - 1] % M *
                                   f[i - k][j - 1] % M);
    sum[i][0] = f[i][0];
    for (int j = 1; j <= d; j++) sum[i][j] = add(f[i][j], sum[i][j - 1]);
  }
  int ans = 0;
  for (int i = 1; i <= n; i++)
    for (int j = 0; j <= d && j < i; j++)
      for (int k = 0; j + k <= d; k++)
        if (k ^ 1) ans = add(ans, f[i][j] * 1ll * f[n - i + 1][k] % M);
  printf("%d\n", ans * 2ll * n * (n - 1) % M);
}
int main() {
  init();
  solve();
  return 0;
}
