#include <bits/stdc++.h>
using namespace std;
const int N = 105;
const int mod = 1e9 + 7;
int dp[2][N][N][N], g[2][N][N];
int ans;
int cj[2 * N], inv[2 * N];
int power(int x, int y) {
  int ret = 1;
  for (; y; y >>= 1, x = 1ll * x * x % mod) {
    if (y & 1) ret = 1ll * ret * x % mod;
  }
  return ret;
}
int C(int n, int m) { return 1ll * cj[n] * inv[n - m] % mod * inv[m] % mod; }
int main() {
  int n, m, K, i, j, k, l, p;
  int tmp;
  cj[0] = 1;
  for (i = 1; i <= 200; i++) cj[i] = 1ll * cj[i - 1] * i % mod;
  inv[200] = power(cj[200], mod - 2);
  inv[0] = 1;
  for (i = 199; i; i--) inv[i] = 1ll * inv[i + 1] * (i + 1) % mod;
  scanf("%d%d%d", &n, &m, &K);
  for (i = 1; i <= n; i++) {
    dp[1][i][i - 1][1] = 1;
    g[1][i][i - 1] = 1;
  }
  for (i = 1; i <= min(m - 1, n / 2 + 1); i++) {
    memset(g[i + 1 & 1], 0, sizeof(g[i + 1 & 1]));
    for (j = max(1, 2 * i - 4); j <= n; j++)
      for (k = 0; k <= n; k++)
        for (l = 1; l <= K; l++) dp[i + 1 & 1][j][k][l] = 0;
    for (k = 0; k <= n; k++) {
      for (j = 1; j <= n - k - 1; j++) {
        ans = (ans + 1ll * g[i & 1][j][k] * (m - i)) % mod;
      }
    }
    for (j = 2 * i - 1; j <= n; j++) {
      for (k = 0; k <= n; k++) {
        for (l = k + 2; l <= n - j; l++) {
          tmp = C(l - k - 2 + k + 1, k + 1);
          if (tmp > K) continue;
          for (p = 1; p * tmp <= K; p++) {
            dp[i + 1 & 1][j + l][l - k - 2][p * tmp] =
                (dp[i + 1 & 1][j + l][l - k - 2][p * tmp] +
                 dp[i & 1][j][k][p]) %
                mod;
            g[i + 1 & 1][j + l][l - k - 2] =
                (g[i + 1 & 1][j + l][l - k - 2] + dp[i & 1][j][k][p]) % mod;
          }
        }
      }
    }
  }
  printf("%d", ans);
}
