#include <bits/stdc++.h>
using namespace std;
const int N = 55, mod = 1e9 + 7;
const int K = 101;
int dp[N][N][N][2 * N];
int c[2 * N][2 * N];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n, m, kt;
  cin >> n >> m >> kt;
  c[0][0] = 1;
  for (int i = 0; i < 2 * N; i++) {
    c[i][0] = c[i][i] = 1;
    for (int j = 1; j < i; j++) {
      if (c[i - 1][j] == -1 || c[i - 1][j - 1] == -1)
        c[i][j] = -1;
      else
        c[i][j] = c[i - 1][j] + c[i - 1][j - 1];
      if (c[i][j] > kt) c[i][j] = -1;
    }
  }
  n /= 2;
  long long ans = 0;
  dp[1][0][0][1] = 1;
  for (int mx = 1; mx <= min(n + 1, m); mx++)
    for (int i = 0; i <= n; i++)
      for (int cnt = 0; cnt <= i; cnt++)
        for (int k = 1; k < K; k++) {
          int w = dp[mx][i][cnt][k];
          if (i) ans += (1LL * (m - mx + 1) * w) % mod;
          ans %= mod;
          for (int a = 1; i + a <= n; a++) {
            int r;
            if (cnt == 0)
              r = 1;
            else
              r = c[cnt + a - 1][cnt - 1];
            if (r == -1 || r * k > kt) break;
            dp[mx + 1][i + a][a][k * r] += w;
            dp[mx + 1][i + a][a][k * r] %= mod;
          }
        }
  cout << ans << endl;
}
