#include <bits/stdc++.h>
using namespace std;
int n, k, mod = 1000000007;
long long m;
int mem[101][10001];
int pre[101][101];
int power(int a, long long b) {
  if (b == 0) return 1;
  long long t = power(a, b / 2);
  t *= t;
  t %= mod;
  return b % 2 ? (t * a) % mod : t;
}
int memc[101][101];
long long C(int n, int r) {
  if (n == r) return 1;
  if (n == 0) return 0;
  if (memc[n][r] != -1) return memc[n][r];
  return memc[n][r] = (C(n - 1, r) + C(n - 1, r - 1)) % mod;
}
long long calc(int N, int I) {
  if (pre[N][I] != -1) return pre[N][I];
  return pre[N][I] = power(C(n, I), (m + N - 1) / n);
}
long long solve(int N, int K) {
  if (N == 0) return K == 0 ? 1 : 0;
  if (mem[N][K] != -1) return mem[N][K];
  long long res = 0;
  for (int i = 0; i <= min(n, K); i++) {
    res += calc(N, i) * solve(N - 1, K - i);
    res %= mod;
  }
  return mem[N][K] = res;
}
int main() {
  memset(mem, -1, sizeof mem);
  memset(pre, -1, sizeof pre);
  memset(memc, -1, sizeof memc);
  long long p;
  cin >> n >> m >> k;
  cout << solve(min(m, (long long)n), k) << endl;
  return 0;
}
