#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 5;
long long dp[N][11], inv[11], ans;
int n, d, Mod;
long long Pow(long long a, int x) {
  long long res = 1;
  while (x) {
    if (x & 1) (res *= a) %= Mod;
    (a *= a) %= Mod;
    x >>= 1;
  }
  return res;
}
int main() {
  scanf("%d%d%d", &n, &d, &Mod);
  if (n <= 2) return puts("1");
  inv[0] = 1;
  for (int i = 2; i <= d; i++) inv[i] = Pow(i, Mod - 2);
  dp[0][d - 1] = dp[0][0] = 1;
  for (int i = 1; i <= n / 2; i++) {
    for (int j = n; j >= 0; j--) {
      for (int k = 0; k < d; k++) {
        if (!dp[j][k]) continue;
        long long tmp = dp[i - 1][d - 1], tmp1 = dp[i - 1][d - 1];
        for (int l = 1; l * i + j < n && k + l <= d; l++) {
          (dp[i * l + j][l + k] += tmp * dp[j][k]) %= Mod;
          (tmp *= inv[l + 1] * (tmp1 + l) % Mod) %= Mod;
        }
      }
    }
  }
  ans = (dp[n - 1][d] + Mod) % Mod;
  if (~n & 1)
    (ans -=
     dp[n / 2 - 1][d - 1] * (dp[n / 2 - 1][d - 1] - 1) % Mod * inv[2] % Mod -
     Mod) %= Mod;
  cout << ans;
}
