#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
long long n, m, k;
long long C[105][105];
long long dp[105][105 * 105];
long long sv[105][2];
long long fast(long long b, long long e) {
  if (!e) return 1;
  return fast(b * b % mod, e >> 1) * ((e & 1) ? b : 1) % mod;
}
long long solve(int idx, int k) {
  if (k < 0) return 0;
  if (idx == n) return 1;
  long long &ret = dp[idx][k];
  if (~ret) return ret;
  ret = 0;
  bool places = (idx < (m % n));
  places ^= 1;
  int elfadl = (n - idx - 1) * n;
  for (int i = 0; i <= n; i++) {
    if (elfadl + i < k) continue;
    if (i > k) break;
    ret = (ret + sv[i][places] * solve(idx + 1, k - i)) % mod;
  }
  return ret;
}
void bld() {
  for (int i = 0; i <= 100; i++)
    for (int j = 0; j <= i; j++)
      C[i][j] =
          ((j == 0 || i == j) ? 1 : (C[i - 1][j - 1] + C[i - 1][j]) % mod);
  long long b = (m / n) + 1;
  for (int i = 0; i <= 100; i++) sv[i][0] = fast(C[n][i], b);
  b--;
  for (int i = 0; i <= 100; i++) sv[i][1] = fast(C[n][i], b);
}
int main() {
  scanf("%lld%lld%lld", &n, &m, &k);
  bld();
  memset(dp, -1, sizeof(dp));
  printf("%lld\n", solve(0, k));
  return 0;
}
