#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007LL;
long long C[105][105], D[2][105][105];
long long memo[101][100 * 100 + 1];
long long pot(long long a, long long b) {
  if (b == 0) return 1;
  long long x = pot(a, b / 2);
  x = (x * x) % mod;
  if (b & 1) x = (x * a) % mod;
  return x;
}
long long n, m, k;
long long r, d;
long long dp(int i, int on) {
  if (i == n) return (on == k);
  long long &ans = memo[i][on];
  if (ans >= 0) return ans;
  ans = 0;
  for (int z = 0; z <= n and z <= k - on; ++z) {
    ans = (ans + D[i < d][n][z] * dp(i + 1, on + z)) % mod;
  }
  return ans;
}
int main() {
  C[0][0] = 1;
  for (int i = 1; i < 105; ++i)
    for (int j = 0; j <= i; ++j)
      C[i][j] = ((j > 0 ? C[i - 1][j - 1] : 0) + C[i - 1][j]) % mod;
  memset(memo, -1, sizeof(memo));
  cin >> n >> m >> k;
  r = m / n;
  d = m % n;
  for (int z = 0; z < int(2); ++z)
    for (int i = 0; i < int(105); ++i)
      for (int j = 0; j < int(105); ++j) D[z][i][j] = pot(C[i][j], r + z);
  cout << dp(0, 0) << endl;
}
