#include <bits/stdc++.h>
using namespace std;
const int N = 100 + 1;
const int MOD = 1000000007;
long long c[N][N], dp[N][N * N], pows[N][N];
long long pow(long long a, long long k) {
  long long res = 1;
  while (k) {
    if (k & 1) res = (res * a) % MOD;
    a = (a * a) % MOD;
    k >>= 1;
  }
  return res;
}
int main() {
  long long n, m, k, i, j, l;
  cin >> n >> m >> k;
  for (i = 0; i <= n; i++)
    for (c[i][0] = 1, j = 1; j <= i; j++)
      c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % MOD;
  for (i = 1; i <= n; i++)
    for (j = 0; j <= n; j++) pows[i][j] = pow(c[n][j], m / n + (i <= m % n));
  dp[0][0] = 1;
  for (i = 1; i <= n; i++)
    for (j = 0; j <= k; j++)
      for (l = 0; l <= min(j, n); l++)
        dp[i][j] = (dp[i][j] + dp[i - 1][j - l] * pows[i][l]) % MOD;
  cout << dp[n][k];
  return 0;
}
