#include <bits/stdc++.h>
using namespace std;
int const N = 100 + 20, K = 1e4 + 20;
long long const MOD = 1e9 + 7;
int n, k;
long long m, ans, c[N][N], cnt[N], num[N][N], dp[N][K];
long long bPow(long long a, long long b) {
  long long ret = 1;
  for (; b; b >>= 1) {
    if (b & 1) (ret *= a) %= MOD;
    (a *= a) %= MOD;
  }
  return ret;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  c[0][0] = 1;
  for (int i = 1; i < N; i++) {
    c[i][0] = 1;
    for (int j = 1; j <= i; j++) {
      c[i][j] = c[i - 1][j] + c[i - 1][j - 1];
      if (c[i][j] >= MOD) c[i][j] -= MOD;
    }
  }
  cin >> n >> m >> k;
  for (int i = 0; i < n; i++) cnt[i] = (i < m % n) + m / n;
  for (int i = 0; i < n; i++)
    for (int j = 0; j <= n; j++) num[i][j] = bPow(c[n][j], cnt[i]);
  dp[0][0] = 1;
  for (int i = 1; i <= n; i++)
    for (int j = 0; j <= min(n * j, k); j++)
      for (int l = 0; l <= min(n, j); l++) {
        dp[i][j] += dp[i - 1][j - l] * num[i - 1][l];
        dp[i][j] %= MOD;
      }
  return cout << dp[n][k], 0;
}
