#include <bits/stdc++.h>
const int M = 105;
long long dp[M][M * M], C[M][M];
int n, t;
long long m;
long long Pow(long long x, long long k) {
  long long res = 1;
  for (; k; k >>= 1, (x *= x) %= 1000000007)
    if (k & 1) (res *= x) %= 1000000007;
  return res;
}
int main() {
  for (int i = 0; i < M; ++i)
    for (int j = C[i][0] = 1; j <= i; ++j)
      C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]) % 1000000007;
  scanf("%d%lld%d", &n, &m, &t);
  dp[0][0] = 1;
  for (int i = 1; i <= n; ++i)
    for (int j = 0; j <= n; ++j) {
      long long tmp = Pow(C[n][j], (m - i) / n + 1);
      for (int k = 0; k <= t - j; ++k)
        if (dp[i - 1][k]) (dp[i][k + j] += dp[i - 1][k] * tmp) %= 1000000007;
    }
  printf("%lld\n", dp[n][t]);
  return 0;
}
