#include <bits/stdc++.h>
using namespace std;
const int N = 105;
const long long mod = 1e9 + 7;
int n, m, tmp, k, now, last, dp[2][N][N][N], ans, K, c[N][N];
int main() {
  scanf("%d%d%d", &n, &m, &K);
  c[0][0] = 1;
  for (int i = 1; i <= K; i++)
    for (int j = 0; j <= i; j++) {
      c[i][j] = (j ? c[i - 1][j - 1] : 0) + c[i - 1][j];
      if (c[i][j] > K) c[i][j] = K + 1;
    }
  n++;
  now = 1;
  last = 0;
  dp[now][0][1][1] = 1;
  for (int i = 0; i <= m; i++) {
    last = now;
    now ^= 1;
    if (i) {
      tmp = 0;
      for (int j = 2; j <= n; j++)
        for (int l = 1; l <= K; l++) tmp = (tmp + dp[last][j][0][l]) % mod;
      ans = (ans + (long long)tmp * (m - i + 1) % mod) % mod;
    }
    if (i == m) break;
    memset(dp[now], 0, sizeof(dp[now]));
    for (int j = 0; j <= n; j++)
      for (int k = 1; k <= n; k++)
        for (int l = 1; l <= K; l++)
          if (dp[last][j][k][l])
            for (int t = k; t <= n - j; t++)
              if (l * c[t - 1][k - 1] <= K)
                dp[now][j + t][t - k][l * c[t - 1][k - 1]] =
                    (dp[now][j + t][t - k][l * c[t - 1][k - 1]] +
                     dp[last][j][k][l]) %
                    mod;
  }
  printf("%d\n", ans);
  return 0;
}
