#include <bits/stdc++.h>
long long m;
const int mo = 1000000007;
int f[105][10005], c[105], c1[105], c2[105], i, j, k, s, n;
long long fang(long long a, long long b) {
  long long x = 1;
  for (; b; b >>= 1) b& 1 ? x = x * a % mo : 0, a = a * a % mo;
  return x;
}
int main() {
  scanf("%d%I64d%d", &n, &m, &k);
  c[0] = c1[0] = c2[0] = 1;
  for (i = 1; i <= n; i++)
    c[i] = fang(i, mo - 2) * c[i - 1] % mo * (n + 1 - i) % mo,
    c1[i] = fang(c[i], m / n), c2[i] = (long long)c1[i] * c[i] % mo;
  f[0][0] = 1;
  for (i = 1; i <= n; i++)
    for (j = k > n * (n - i) ? k - n * (n - i) : 0; j <= k && j <= n * i; j++)
      for (s = 0; s <= j && s <= n; s++)
        f[i][j] = (f[i][j] + (long long)f[i - 1][j - s] *
                                 (m % n >= i ? c2[s] : c1[s]) % mo) %
                  mo;
  printf("%d", f[n][k]);
  return 0;
}
