#include <bits/stdc++.h>
using namespace std;
long long n, m, k;
long long MOD = 1e9 + 7;
long long dp[201][20001];
long long f[2001][2001];
long long c(long long n, long long k) {
  if (k > n) return 0;
  if (k < 0) return 0;
  if (n == 0) return 1;
  if (f[n][k] != -1) return f[n][k];
  f[n][k] = (c(n - 1, k) + c(n - 1, k - 1)) % MOD;
  return f[n][k];
}
long long pow_c[101][101];
long long power(long long a, long long b) {
  if (b == 0) return 1;
  long long p = power(a, b / 2);
  if (b % 2 == 1)
    return (((p * p) % MOD) * a) % MOD;
  else
    return (p * p) % MOD;
}
void init() {
  for (int num = 0; num < n; num++) {
    long long cnt = (m - num - 1) / n + 1;
    for (int i = 0; i <= n; i++) pow_c[i][num] = power(c(n, i), cnt);
  }
}
long long ans(long long num, long long p) {
  if (num == -1) return p == k;
  if (p > k) return 0;
  if (dp[num][p] != -1) return dp[num][p];
  long long res = 0;
  for (int i = 0; i <= n; i++)
    res = (res + pow_c[i][num] * ans(num - 1, p + i)) % MOD;
  dp[num][p] = res;
  return res;
}
int main() {
  cin >> n >> m >> k;
  for (int i = 0; i < 101; i++)
    for (int j = 0; j < 10001; j++) dp[i][j] = -1;
  for (int i = 0; i < 101; i++)
    for (int j = 0; j < 101; j++) f[i][j] = -1;
  init();
  cout << ans(n - 1, 0) << endl;
  return 0;
}
