#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 100 + 7;
const int MAX_M = 50 + 7;
const long long MOD = 1000000000 + 7;
int C[MAX_N][MAX_N];
int dp[MAX_M][MAX_M][MAX_M][MAX_N];
int main() {
  C[0][0] = 1;
  for (int i = 1; i < MAX_N; i++) {
    C[i][0] = C[i][i] = 1;
    for (int j = 1; j < i; j++) {
      C[i][j] = C[i - 1][j - 1] + C[i - 1][j];
      if (C[i][j] > 100) C[i][j] = 101;
    }
  }
  int N, M, K;
  scanf("%d%d%d", &N, &M, &K);
  dp[0][0][0][1] = 1;
  long long ans = 0;
  for (int i = 0; i < M && i <= N / 2; i++) {
    for (int s = 0; s <= N / 2; s++) {
      for (int last = 0; last <= N / 2; last++) {
        for (int way = 1; way <= K; way++) {
          long long t = dp[i][s][last][way];
          if (t == 0ll) continue;
          if (i) (ans += t * (M - i)) %= MOD;
          for (int nxt = 1; nxt + s <= N / 2; nxt++) {
            int nway = way * C[last + nxt - 1][nxt - 1];
            if (nway <= K) (dp[i + 1][s + nxt][nxt][nway] += t) %= MOD;
          }
        }
      }
    }
  }
  printf("%lld\n", ans);
  return 0;
}
