A tree is a connected graph without cycles.

Two trees, consisting of n vertices each, are called isomorphic if there exists a permutation p: {1, ..., n} → {1, ..., n} such that the edge (u, v) is present in the first tree if and only if the edge (pu, pv) is present in the second tree.

Vertex of the tree is called internal if its degree is greater than or equal to two.

Count the number of different non-isomorphic trees, consisting of n vertices, such that the degree of each internal vertex is exactly d. Print the answer over the given prime modulo mod.

Input

The single line of the input contains three integers n, d and mod (1 ≤ n ≤ 1000, 2 ≤ d ≤ 10, 108 ≤ mod ≤ 109) — the number of vertices in the tree, the degree of internal vertices and the prime modulo.

Output

Print the number of trees over the modulo mod.

Examples

Input

5 2 433416647


Output

1


Input

10 3 409693891


Output

2


Input

65 4 177545087


Output

910726
997 6 680633279
 989 8 990767311
 999 2 750160753
 1 4 904448911
 1000 3 750160753
 1000 6 970400047
 983 10 762763321
 106 9 434448163
 2 3 434448163
 102 4 904448911
 992 10 762763321
 2 4 434448163
 2 2 434448163
 1000 2 750160753
 1 9 837744727
 1 7 727733989
 1000 10 750160753
 2 10 904448911
 102 6 944036243
 1000 5 970400047
 180 3 434448163
 992 6 680633279
 1 8 727733989
 2 8 904448911
 1 10 837744727
 102 5 944036243
 2 5 434448163
 100 8 944036243
 104 7 434448163
 996 8 990767311
 998 5 680633279
 1000 7 970400047
 101 10 944036243
 1 6 727733989
 2 7 904448911
 998 7 930423869
 998 4 817408561
 999 3 837744727
 994 9 390528763
 2 9 904448911
 100 2 944036243
 1 2 727733989
 1000 8 750160753
 2 6 904448911
 101 4 944036243
 1 3 727733989
 995 4 817408561
 1000 9 750160753
 1 5 727733989

148277591
 976760285
 1
 1
 16572167
 0
 663665406
 1296
 1
 0
 571064998
 1
 1
 1
 1
 1
 0
 1
 748711
 0
 106622108
 451750559
 1
 1
 1
 74266477
 1
 3128
 47207
 350615945
 233182629
 0
 235
 1
 1
 167343048
 443073705
 0
 211625777
 1
 1
 1
 0
 1
 467334192
 1
 36421881
 0
 1

#include <bits/stdc++.h>
using namespace std;
long long f[1010][11][1010];
long long ine[11];
int n, d;
long long mod;
long long ans = 0;
long long C(long long x, long long y) {
  long long re = 1;
  int i;
  for (i = x - y + 1; i <= x; i++) {
    (re *= i % mod) %= mod;
  }
  for (i = 1; i <= y; i++) {
    (re *= ine[i]) %= mod;
  }
  return re;
}
int main() {
  int i, j, k, l;
  scanf("%d%d%lld", &n, &d, &mod);
  ine[0] = ine[1] = 1;
  for (i = 2; i <= 10; i++) {
    ine[i] = (mod - mod / i) * ine[mod % i] % mod;
  }
  for (i = 0; i <= n; i++) {
    f[1][0][i] = 1;
    f[1][d - 1][i] = 1;
  }
  for (i = 2; i <= n; i++) {
    for (j = 1; j <= d && j < i; j++) {
      for (k = 1; k <= n; k++) {
        f[i][j][k] = f[i][j][k - 1];
        for (l = 1; l <= j && l * k < i; l++) {
          if (f[k][d - 1][k - 1]) {
            (f[i][j][k] += f[i - l * k][j - l][k - 1] *
                           C(f[k][d - 1][k - 1] + l - 1, l) % mod) %=
                1000000007;
          }
        }
      }
    }
  }
  if (n & 1) {
    ans = f[n][d][n / 2];
  } else {
    ans = (f[n][d][n / 2 - 1] + C(f[n / 2][d - 1][n / 2 - 1] + 1, 2)) % mod;
  }
  printf("%lld\n", ans);
  return 0;
}
