#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
const int MAX_N = 110;
long long dp[MAX_N][10100];
long long F[MAX_N];
long long pow_mod(long long a, long long n, long long m) {
  long long res = 1;
  while (n) {
    if (n & 1) res = res * a % m;
    a = a * a % m;
    n >>= 1;
  }
  return res;
}
long long C(int n, int m) {
  return F[n] * pow_mod(F[n - m] * F[m] % MOD, MOD - 2, MOD) % MOD;
}
long long ca[MAX_N], cb[MAX_N];
int main(void) {
  long long n, kk, i, j, k;
  long long m;
  F[0] = 1;
  for (i = 1; i <= 100; i++) F[i] = F[i - 1] * i % MOD;
  cin >> n >> m >> kk;
  dp[0][0] = 1;
  long long a = (m + (n - 1)) / n, b = m / n;
  for (k = 0; k <= n; k++) {
    ca[k] = pow_mod(C(n, k), a, MOD) % MOD;
    cb[k] = pow_mod(C(n, k), b, MOD) % MOD;
  }
  for (i = 1; i <= n; i++) {
    for (j = 0; j <= kk; j++) {
      for (k = 0; k <= n; k++) {
        if (j >= k) {
          if (i <= m % n)
            dp[i][j] = (dp[i][j] + dp[i - 1][j - k] * ca[k] % MOD) % MOD;
          else
            dp[i][j] = (dp[i][j] + dp[i - 1][j - k] * cb[k] % MOD) % MOD;
        }
      }
    }
  }
  printf("%lld\n", dp[n][kk]);
}
