#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int MAXN = 100, MAXK = 10000;
int n, k;
long long m;
int ans[MAXN][MAXK + 1], P[MAXK + 1][2], C[MAXN + 1][MAXN + 1];
void input();
void solve();
void comp();
int power(long long, long long);
void precomp();
int calc(int, int);
int main() {
  input();
  solve();
  return 0;
}
void input() { cin >> n >> m >> k; }
void solve() {
  precomp();
  cout << calc(n - 1, k) << endl;
}
int calc(int i, int j) {
  if (ans[i][j] == -1) {
    ans[i][j] = 0;
    for (int p = 0; p < min(j + 1, n + 1); p++)
      ans[i][j] =
          (ans[i][j] + (long long)calc(i - 1, j - p) * P[p][i < m % n]) % MOD;
  }
  return ans[i][j];
}
void precomp() {
  for (int i = 0; i < n + 1; i++) C[i][0] = 1;
  for (int i = 1; i < n + 1; i++)
    for (int j = 1; j < i + 1; j++)
      C[i][j] = ((long long)C[i - 1][j] + C[i - 1][j - 1]) % MOD;
  for (int i = 0; i < n + 1; i++) {
    P[i][0] = power(C[n][i], m / n);
    P[i][1] = ((long long)P[i][0] * C[n][i]) % MOD;
  }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < k + 1; j++) ans[i][j] = -1;
  for (int i = 0; i < n + 1; i++) ans[0][i] = (P[i][0 < m % n]) % MOD;
}
int power(long long a, long long b) {
  if (!b) return 1;
  long long r = (a * a) % MOD;
  r = power(r, b / 2);
  if (b & 1) r *= a;
  return r % MOD;
}
