#include <bits/stdc++.h>
using namespace std;
const int Mod = 1000000007;
int n, m, K;
int f[52][102][52][102];
int C[101][101];
int main() {
  int i, j, k, l;
  scanf("%d%d%d", &n, &m, &K);
  C[0][0] = 1;
  for ((i) = (1); (i) != (101); ++(i)) {
    C[i][0] = 1;
    for ((j) = (1); (j) <= (i); ++(j))
      C[i][j] = min(C[i - 1][j - 1] + C[i - 1][j], 200);
  }
  f[0][1][0][1] = 1;
  int ans = 0;
  for ((i) = (0); (i) != (min(m, n / 2 + 1)); ++(i))
    for ((j) = (0); (j) <= (n + 1); ++(j))
      for ((k) = (0); (k) <= ((n + 1) / 2); ++(k))
        for ((l) = (1); (l) <= (K); ++(l)) {
          int c = f[i][j][k][l];
          if (c == 0) continue;
          if (j > 1) ans = (ans + (long long)c * (m - i)) % Mod;
          int to;
          for ((to) = (1); (to) <= ((n + 1) / 2); ++(to)) {
            if (to * 2 + j > n + 1) break;
            int nway = l * C[k + to - 1][to - 1];
            if (nway <= K) {
              int& np = f[i + 1][to * 2 + j][to][nway];
              np = (np + c) % Mod;
            }
          }
        }
  cout << ans << endl;
  return 0;
}
