#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
long long bigMod(long long a, long long p) {
  if (p == 0) return 1;
  if (p & 1) return (a * bigMod(a, p - 1)) % mod;
  long long tmp = bigMod(a, p / 2);
  return (tmp * tmp) % mod;
}
long long ncr[105][105], f[105][105];
long long dp[105][10005];
int main() {
  ncr[0][0] = 1;
  for (int n = (1); n <= (100); ++n)
    for (int r = (0); r <= (n); ++r) {
      if (r == 0)
        ncr[n][r] = 1;
      else
        ncr[n][r] = (ncr[n - 1][r - 1] + ncr[n - 1][r]) % mod;
    }
  long long R, C, K;
  cin >> R >> C >> K;
  for (int i = 0; i < (R); ++i) {
    long long pwr = C / R;
    if ((C % R) > i) {
      ++pwr;
    }
    for (int x = (0); x <= (R); ++x) {
      f[i][x] = bigMod(ncr[R][x], pwr);
    }
  }
  dp[0][0] = 1;
  for (int i = 0; i < (R); ++i) {
    for (int s = (0); s <= (K); ++s) {
      int baki = K - s;
      for (int here = 0; here <= baki && here <= R; ++here) {
        dp[i + 1][s + here] =
            (dp[i + 1][s + here] + (dp[i][s] * f[i][here])) % mod;
      }
    }
  }
  cout << dp[R][K] << "\n";
  return 0;
}
