#include <bits/stdc++.h>
using namespace std;
const int M = 1000000007;
const long long M2 = 1LL * M * M;
long long dp[110][10010];
long long c[110][110];
long long exp_mod(long long a, long long b) {
  a %= M;
  long long ans = 1;
  while (b) {
    if (b & 1) ans = ans * a % M;
    a = a * a % M;
    b >>= 1;
  }
  return ans;
}
long long nima[110][110];
int main() {
  for (int i = 0; i <= 100; i++) {
    c[i][0] = 1;
    for (int j = 1; j <= i; j++) c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % M;
  }
  int n, k;
  long long m;
  while (cin >> n >> m >> k) {
    for (int p = 0; p <= n; p++)
      for (int i = 1; i <= n; i++)
        nima[p][i] = exp_mod(c[n][p], (m - i) / n + 1);
    memset(dp, 0, sizeof(dp));
    dp[0][0] = 1;
    for (int i = 1; i <= n; i++) {
      for (int j = 0; j <= k; j++) {
        dp[i][j] = 0;
        for (int p = 0; p <= n && p <= j; p++) {
          dp[i][j] += dp[i - 1][j - p] * nima[p][i];
          if (dp[i][j] >= M2) dp[i][j] -= M2;
        }
        dp[i][j] %= M;
      }
    }
    cout << dp[n][k] << endl;
  }
}
