#include <bits/stdc++.h>
using namespace std;
int C[110][110];
map<pair<pair<int, int>, pair<int, int> >, long long> mp;
long long func(int len, int init, int maxsum, int maxprod) {
  if (len == 1) return 1;
  pair<pair<int, int>, pair<int, int> > state =
      make_pair(make_pair(len, init), make_pair(maxsum, maxprod));
  if (mp.find(state) != mp.end()) return mp[state];
  long long ans = 0;
  int i;
  for (i = 1;; i++) {
    if (i > maxsum - init || C[init - 1][i] > maxprod) break;
    ans = (ans + func(len - 1, i, maxsum - init, maxprod / C[init - 1][i])) %
          1000000007ll;
  }
  return mp[state] = ans;
}
int main(void) {
  int N, M, K, i, j;
  for ((i) = 0; (i) < (int)(110); (i)++)
    for ((j) = 0; (j) < (int)(110); (j)++) {
      if (i == 0 || j == 0)
        C[i][j] = 1;
      else
        C[i][j] = min(C[i - 1][j] + C[i][j - 1], 110);
    }
  cin >> N >> M >> K;
  long long ans = 0;
  for (i = 1; i < M; i++)
    for (j = 1; j <= N / 2; j++)
      ans = (ans + func(i, j, N / 2, K) * (M - i)) % 1000000007ll;
  cout << ans << endl;
  return 0;
}
