#include <bits/stdc++.h>
using namespace std;
const long long P = ((long long)1e9) + 7;
long long n, k, m;
long long c[110][110];
long long dp[110][10010];
long long st_c[110][110];
long long st(long long a, long long b) {
  if (b == 0) return 1;
  if (b % 2 == 0) return st((a * a) % P, b / 2);
  return (a * st(a, b - 1)) % P;
}
int main() {
  cin >> n >> m >> k;
  c[0][0] = 1;
  for (int(i) = (int)(1); (i) < (int)(n + 1); ++(i)) {
    c[i][0] = c[i][i] = 1;
    for (int(j) = (int)(1); (j) < (int)(i); ++(j))
      c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % P;
  }
  for (int(i) = (int)(1); (i) < (int)(n + 1); ++(i))
    for (int(q) = 0; (q) < (int)(n + 1); ++(q))
      st_c[i][q] = st(c[n][q], (m - i + n) / n);
  memset(dp, 0, sizeof(dp));
  dp[0][0] = 1;
  for (int(i) = (int)(1); (i) < (int)(n + 1); ++(i))
    for (int(j) = 0; (j) < (int)(k + 1); ++(j))
      for (int(q) = 0; (q) < (int)(min(j, int(n)) + 1); ++(q))
        dp[i][j] = (dp[i][j] + dp[i - 1][j - q] * st_c[i][q]) % P;
  cout << dp[n][k] << '\n';
  return 0;
}
