#include <bits/stdc++.h>
using namespace std;
int dp[2][101][101][101], n, m, K, ans = 0, c[101][101];
void add(int &x, int y) {
  x += y;
  if (x >= 1000000007) x -= 1000000007;
}
int main() {
  cin >> n >> m >> K;
  for (int i = 0; i <= n; i++) {
    c[i][0] = 1;
    for (int j = 1; j <= i; j++)
      c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % 1000000007;
  }
  for (int i = 1; i <= m; i++) {
    for (int j = 1; j <= n; j++) add(dp[i % 2][j][j][1], 1);
    memset(dp[(i + 1) % 2], 0, sizeof dp[(i + 1) % 2]);
    for (int j = 1; j <= n; j++)
      for (int k = 1; k <= j; k++)
        for (int s = 1; s <= K; s++)
          if (dp[i % 2][j][k][s]) {
            for (int z = k; z + j <= n; z++)
              if ((long long)s * c[z - 1][k - 1] <= K)
                add(dp[(i + 1) % 2][j + z][z - k][s * c[z - 1][k - 1]],
                    dp[i % 2][j][k][s]);
          }
    for (int j = 1; j <= n; j++)
      for (int s = 1; s <= K; s++)
        if (dp[i % 2][j][0][s]) {
          add(ans, dp[i % 2][j][0][s]);
        }
  }
  cout << ans << endl;
  return 0;
}
