#include <bits/stdc++.h>
using namespace std;
int n, m, k, af, bf;
const int INF = 1000000000, mod = 1000000007;
int dp[52][53][52][103];
long long c[520][520];
void inc(int& a, int b) { a = (a + b) % mod; }
int main() {
  cin >> n >> m >> k;
  c[0][0] = 1;
  for (int i = 1; i <= 300; ++i)
    for (int j = 0; j <= i; ++j)
      c[i][j] = min(INF + 0ll, c[i - 1][j - 1] + c[i - 1][j]);
  int ans = 0;
  int n2 = n / 2;
  for (int i = 1; i <= n2; ++i) dp[i][2][i][1] = 1;
  for (int len = 1; len <= n2; ++len)
    for (int last = 2; last <= m && last <= 51; ++last)
      for (int lasts = 1; lasts <= len; ++lasts)
        for (int numb = 1; numb <= k; ++numb)
          if (dp[len][last][lasts][numb]) {
            ans = (ans + dp[len][last][lasts][numb] * (m - last + 1ll)) % mod;
            for (int news = 0; len + news <= n2; ++news) {
              if (c[lasts - 1 + news][news] * numb > k) break;
              inc(dp[len + news][last + 1][news]
                    [numb * c[lasts - 1 + news][news]],
                  dp[len][last][lasts][numb]);
            }
          }
  cout << ans << endl;
}
