#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
int c[110][110], f[2][110][110][110], n, m, wy, ans;
inline void ad(int &x, int y) {
  x += y;
  if (x > mod) x -= mod;
}
int main() {
  int i, j, k, nw, pre, ii, jj;
  scanf("%d%d%d", &n, &m, &wy);
  for (i = 0; i <= 100; i++) c[i][0] = 1;
  for (i = 1; i <= 100; i++)
    for (j = 1; j <= i; j++) c[i][j] = min(c[i - 1][j] + c[i - 1][j - 1], 110);
  ans = 0;
  nw = 1;
  pre = 0;
  for (i = 1; i <= m; i++) {
    nw ^= 1;
    pre ^= 1;
    for (j = 1; j <= n; j++)
      for (k = 1; k <= wy; k++)
        for (ii = 1; ((ii <= wy) && (ii * (k - 1) <= wy)); ii++)
          f[nw][j][k][ii] = 0;
    for (j = 1; j <= n; j++) {
      ad(f[nw][j][j][1], 1);
      if ((i != m) && (2 * j <= n)) ad(ans, 1);
    }
    if (i != m) {
      for (j = 1; j <= n; j++)
        for (k = 1; k <= wy; k++)
          for (ii = 1; ((ii <= wy) && (ii * (k - 1) <= wy)); ii++)
            if (f[pre][j][k][ii])
              for (jj = 1; ((c[jj + k - 1][k - 1] != 110) &&
                            (c[jj + k - 1][k - 1] * ii <= wy) &&
                            (j + jj + k + jj <= n));
                   jj++)
                ad(ans, f[pre][j][k][ii]);
    }
    for (j = 1; j <= n; j++)
      for (k = 1; k <= wy; k++)
        for (ii = 1; ((ii <= wy) && (ii * (k - 1) <= wy)); ii++)
          if (f[pre][j][k][ii])
            for (jj = 1;
                 ((c[jj + k - 1][k - 1] != 110) &&
                  (c[jj + k - 1][k - 1] * ii <= wy) && (j + jj + k <= n));
                 jj++)
              ad(f[nw][j + jj + k][jj][ii * c[jj + k - 1][k - 1]],
                 f[pre][j][k][ii]);
  }
  cout << ans << endl;
  return 0;
}
