#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
int n, d, mod;
long long f[N][15], inv[15];
int main() {
  scanf("%d%d%d", &n, &d, &mod);
  if (n <= 2) return puts("1"), 0;
  f[0][0] = 1;
  f[0][d - 1] = 1;
  inv[1] = 1;
  for (int i = 2; i <= d + 1; i++) {
    long long t = i, x = mod - 2, &res = inv[i];
    res = 1;
    for (; x; x >>= 1, t = t * t % mod)
      if (x & 1) res = res * t % mod;
  }
  for (int sub = 1; 2 * sub <= n; sub++)
    for (int size = n; size >= 0; size--)
      for (int deg = d; deg >= 0; deg--) {
        long long t = f[sub - 1][d - 1];
        for (int cnt = 1; cnt + deg <= d && cnt * sub + size < n; cnt++)
          (f[cnt * sub + size][cnt + deg] += f[size][deg] * t) %= mod,
              t = t * (f[sub - 1][d - 1] + cnt) % mod * inv[cnt + 1] % mod;
      }
  printf("%d\n",
         (int)((f[n - 1][d] + mod -
                (n % 2 ? 0
                       : f[n / 2 - 1][d - 1] * (f[n / 2 - 1][d - 1] - 1 + mod) %
                             mod * inv[2] % mod)) %
               mod));
  return 0;
}
