#include <bits/stdc++.h>
using namespace std;
int n, K;
const long long mod = 1000000007;
long long c[111][111], cp[111];
long long m;
long long dp[111][11111];
long long lpow(long long x, long long y) {
  if (y == 0) return 1;
  long long ret = lpow(x, y / 2);
  if (y % 2)
    return (((ret * ret) % mod) * x) % mod;
  else
    return (ret * ret) % mod;
}
int main() {
  for (int i = 0; i <= 100; ++i) c[i][0] = c[i][i] = 1;
  for (int i = 1; i <= 100; ++i)
    for (int j = 1; j <= 100; ++j)
      c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % mod;
  cin >> n >> m >> K;
  dp[0][0] = 1;
  for (int i = 0; i <= n; ++i) {
    for (int j = 0; j <= n; ++j) {
      cp[j] = lpow(c[n][j], m / n);
      if (m % n >= i + 1) cp[j] = (cp[j] * c[n][j]) % mod;
    }
    for (int j = 0; j <= K; ++j) {
      for (int k = 0; k <= min(n, j); ++k) {
        dp[i + 1][j] = (dp[i + 1][j] + dp[i][j - k] * cp[k]) % mod;
      }
    }
  }
  cout << dp[n][K];
  return 0;
}
