#include <bits/stdc++.h>
using namespace std;
int n, d, mod;
long long dp[1111][11][1111], invx[11];
long long powermod(long long a, long long n, long long mod) {
  long long ans = 1;
  while (n) {
    if (n & 1) ans = ans * a % mod;
    a = a * a % mod;
    n >>= 1;
  }
  return ans;
}
long long inv(long long a, long long mod) { return powermod(a, mod - 2, mod); }
int main() {
  cin >> n >> d >> mod;
  invx[1] = 1;
  for (int i = 2; i < 11; i++) invx[i] = inv(i, mod) % mod;
  if (n <= 2) {
    puts("1");
    return 0;
  }
  dp[1][0][0] = 1;
  for (int i = 2; i <= n; i++) {
    for (int j = 1; j <= d; j++) {
      for (int k = (i - 1) / j; k <= i - 1; k++) {
        dp[i][j][k] = dp[i][j][k - 1];
        long long cur = 1, buf = dp[k][d - 1][k - 1];
        for (int t = 1; t <= j && t * k <= i - 1; t++) {
          cur = cur * buf++ % mod * invx[t] % mod;
          dp[i][j][k] =
              (dp[i][j][k] + dp[i - t * k][j - t][min(k - 1, i - t * k - 1)] *
                                 (cur + (k == 1))) %
              mod;
        }
      }
    }
  }
  long long ans = dp[n][d][(n - 1) / 2];
  if (n % 2 == 0)
    ans = (ans + dp[n / 2][d - 1][n / 2 - 1] *
                     (dp[n / 2][d - 1][n / 2 - 1] + 1) % mod * invx[2]) %
          mod;
  cout << ans << endl;
  return 0;
}
