#include <bits/stdc++.h>
using namespace std;
int n, k;
long long m;
long long f[111][11111], c[111][111], s[111], p[111][111];
long long res;
long long POW(long long a, long long x) {
  if (x == 0) return 1;
  long long p = POW(a, x / 2);
  p = (p * p) % 1000000007;
  if (x % 2 != 0) p = (p * a) % 1000000007;
  return p;
}
long long rev(long long a) { return POW(a, 1000000007 - 2); }
int main() {
  cin >> n >> m >> k;
  int i, j, t;
  for (i = 1; i <= n; i++) s[i] = m / n;
  for (i = 1; i <= m % n; i++) ++s[i];
  c[0][0] = 1;
  for (i = 1; i <= n; i++) {
    c[i][0] = 1;
    for (j = 1; j <= i; j++)
      c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % 1000000007;
  }
  for (i = 0; i <= n; i++)
    for (j = 1; j <= n; j++) p[i][j] = POW(c[n][i], s[j]);
  for (i = 0; i <= min(k, n); i++) f[1][i] = p[i][1];
  for (i = 2; i <= n; i++)
    for (j = 0; j <= min(n * i, k); j++)
      for (t = 0; t <= min(n, j); t++) {
        f[i][j] += p[t][i] * f[i - 1][j - t] % 1000000007;
        f[i][j] %= 1000000007;
      }
  cout << f[n][k] << endl;
}
