#include <bits/stdc++.h>
using namespace std;
int p, f[1005][11][505], iv[15], inv[15];
int c(int n, int m) {
  int res = 1;
  for (int i = n; i > n - m; i--) res = 1ll * res * i % p;
  return 1ll * res * inv[m] % p;
}
int main() {
  int n, d;
  scanf("%d%d%d", &n, &d, &p);
  if (n == 1) {
    puts("1");
    return 0;
  }
  inv[0] = inv[1] = iv[1] = 1;
  for (int i = 2; i <= d; i++)
    iv[i] = p - 1ll * (p / i) * iv[p % i] % p,
    inv[i] = 1ll * inv[i - 1] * iv[i] % p;
  for (int i = 0; i <= n / 2; i++) f[1][0][i] = f[1][d - 1][i] = 1;
  for (int i = 2; i <= n; i++)
    for (int j = 1; j <= d; j++)
      for (int k = 1; k <= n / 2; k++) {
        f[i][j][k] = f[i][j][k - 1];
        for (int t = 1; t <= j; t++)
          if (i > t * k)
            f[i][j][k] = (f[i][j][k] + 1ll * f[i - t * k][j - t][k - 1] *
                                           c(f[k][d - 1][k - 1] + t - 1, t)) %
                         p;
      }
  int res = f[n][d][n / 2];
  if (!(n & 1)) res = (res - c(f[n / 2][d - 1][n / 2 - 1], 2) + p) % p;
  printf("%d", res);
  return 0;
}
