#include <bits/stdc++.h>
using namespace std;
const int mod = 1LL * 1000 * 1000 * 1000 + 7, N = 55,
          inverse_2 = 1LL * 500000004;
int n, K, dp[N][N][2], c[N][N];
int C(int r, int n) {
  if (r == 0 || r == n) return 1;
  if (r > n) return 0;
  if (c[r][n]) return c[r][n];
  c[r][n] = (C(r - 1, n - 1) + C(r, n - 1)) % mod;
  return c[r][n];
}
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> K;
  dp[1][0][0] = 1;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= K; j++) {
      dp[i][j][1] = 1LL * dp[i - 1][j - 1][0] * (i - 1) % mod;
      dp[i][j][0] = 1LL * dp[i - 1][j][1] * (i - 1) % mod;
      for (int x = 1; i - x - 1 >= x; x++) {
        if (i - x - 1 == x) {
          for (int s1 = 0; s1 <= j; s1++)
            (dp[i][j][0] += 1LL * C(x, i - 1) * (x) % mod * (i - x - 1) % mod *
                            inverse_2 % mod * dp[x][s1][1] % mod *
                            dp[i - x - 1][j - s1][1] % mod) %= mod;
          for (int s1 = 0; s1 < j; s1++)
            (dp[i][j][1] += 1LL * C(x, i - 1) * (x) % mod * (i - x - 1) % mod *
                            inverse_2 % mod * dp[x][s1][0] % mod *
                            dp[i - x - 1][j - s1 - 1][0] % mod) %= mod;
        } else {
          for (int s1 = 0; s1 <= j; s1++)
            (dp[i][j][0] += 1LL * dp[x][s1][1] * dp[i - x - 1][j - s1][1] %
                            mod * C(x, i - 1) % mod * (x) % mod * (i - x - 1) %
                            mod) %= mod;
          for (int s1 = 0; s1 < j; s1++)
            (dp[i][j][1] += 1LL * dp[x][s1][0] * dp[i - x - 1][j - s1 - 1][0] %
                            mod * C(x, i - 1) % mod * (x) % mod * (i - x - 1) %
                            mod) %= mod;
        }
      }
      for (int x = 1; x < i; x++)
        for (int s1 = 0; s1 < j; s1++)
          (dp[i][j][1] += 1LL * C(x, i - 1) * (x) % mod * (i - x - 1) % mod *
                          dp[x][s1][1] % mod * dp[i - x - 1][j - s1 - 1][0] %
                          mod) %= mod;
    }
  cout << (dp[n][K][1] + dp[n][K][0]) % mod << '\n';
  return 0;
}
