#include <bits/stdc++.h>
using namespace std;
const int M = 1e3 + 5;
long long int dp[M][12][M], inv[M], n, d, mod;
long long int pw(long long int a, long long int b) {
  if (b == 0) return 1ll;
  long long int p = pw(a, b / 2ll);
  if (b % 2ll)
    return p * p % mod * a % mod;
  else
    return p * p % mod;
}
int main() {
  cin >> n >> d >> mod;
  for (long long int i = 1; i <= n; i++) inv[i] = pw(i, mod - 2ll);
  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 int cur = 1, buf = dp[k][d - 1][k - 1];
        for (int t = 1; t <= j && t * k <= i - 1; t++) {
          cur = cur * buf++ % mod * inv[t] % mod;
          (dp[i][j][k] += dp[i - t * k][j - t][min(k - 1, i - t * k - 1)] *
                          (cur + (k == 1))) %= mod;
        }
      }
  long long int ans = dp[n][d][(n - 1) / 2];
  if (n % 2 == 0)
    (ans += dp[n / 2][d - 1][n / 2 - 1] * (dp[n / 2][d - 1][n / 2 - 1] + 1) %
            mod * inv[2]) %= mod;
  cout << (n <= 2 ? 1 : ans) << endl;
}
