#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int mxn = 1006;
const int mxd = 11;
int n, d;
ll MOD;
ll f[mxn][mxd];
int inv[mxd];
int ifac[mxd];
int comb(int a, int b) {
  ll re = ifac[b];
  for (int i = 0; i < b; ++i) (re *= a - i) %= MOD;
  return re;
}
int main() {
  cin >> n >> d >> MOD;
  if (n == 1 || n == 2) {
    cout << 1 % MOD << endl;
    return 0;
  }
  ifac[0] = inv[1] = ifac[1] = 1;
  for (int i = 2; i < mxd; ++i) {
    inv[i] = (ll)MOD / i * (MOD - inv[MOD % i]) % MOD;
    ifac[i] = (ll)ifac[i - 1] * inv[i] % MOD;
  }
  f[1][0] = 1;
  for (int i = 1; i * 2 < n; ++i)
    if ((i - 1) % (d - 1) == 0) {
      int w = (i == 1 ? 1 : f[i][d - 1]);
      for (int j = n; j >= i + 1; --j)
        for (int k = d; k >= 1; --k)
          for (int u = k - 1; u >= 0 && j - i * (k - u) >= 1; --u)
            (f[j][k] += f[j - i * (k - u)][u] * comb(w + k - u - 1, k - u)) %=
                MOD;
    }
  ll ans = f[n][d];
  if (n % 2 == 0) ans += comb(f[n / 2][d - 1] + 1, 2);
  cout << (ans % MOD + MOD) % MOD << endl;
  return 0;
}
