#include <bits/stdc++.h>
using std::cin;
using std::cout;
using std::endl;
using std::min;
const int MAXN = 100 + 9, MAXK = MAXN * MAXN;
const long long MOD = 1000000007;
long long pow(long long a, long long b) {
  long long ans = 1;
  for (; b; b >>= 1) {
    if (b & 1) ans = ans * a % MOD;
    a = a * a % MOD;
  }
  return ans;
}
long long C[MAXN][MAXN], a[2][MAXN], f[MAXN][MAXK];
int main() {
  int n, x, q, i, j, k;
  long long m, p;
  cin >> n >> m >> x;
  for (i = 0; i <= n; ++i) {
    C[i][0] = 1;
    for (j = 1; j <= i; ++j) C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]) % MOD;
  }
  p = m / n, q = m % n;
  for (i = 0; i <= n; ++i) {
    a[0][i] = pow(C[n][i], p);
    a[1][i] = a[0][i] * C[n][i] % MOD;
  }
  f[0][0] = 1;
  for (i = 1; i <= n; ++i)
    for (j = 0; j <= x; ++j)
      for (k = min(n, j); k >= 0; --k)
        f[i][j] = (f[i][j] + a[i <= q][k] * f[i - 1][j - k]) % MOD;
  cout << f[n][x] << endl;
  return 0;
}
