#include <bits/stdc++.h>
using namespace std;
long long f[110][110 * 110], n, k, c[110][110], p[110], m;
long long power(long long a, long long b) {
  long long d = 1;
  for (; b > 1;
       d = (b & 1) ? (a * d % 1000000007) : d, a = a * a % 1000000007, b /= 2)
    ;
  return (a * d) % 1000000007;
}
int main() {
  scanf("%I64d%I64d%I64d", &n, &m, &k);
  c[0][0] = 1;
  c[1][0] = 1;
  for (long long i = 1; i <= n; i++, c[i][0] = 1)
    for (long long j = 1; j <= i; j++)
      c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % 1000000007;
  for (long long i = 0; i <= n; i++) p[i] = power(c[n][i], m / n);
  f[0][0] = 1;
  long long d = 1, *g, *h;
  for (int i = 1; i <= n; i++) {
    bool flag = false;
    if (m % n >= i) flag = true;
    g = f[i], h = f[i - 1];
    for (int j = 0; j <= k; j++)
      for (int l = 0; l <= min((int)n, j); l++) {
        long long C = h[j - l] * p[l] % 1000000007;
        if (flag) C = c[n][l] * C % 1000000007;
        g[j] = (g[j] + C) % 1000000007;
      }
  }
  printf("%I64d\n", f[n][k]);
  return 0;
}
