#include <bits/stdc++.h>
using namespace std;
long long lpow(long long a, long long n) {
  long long c = 1ll;
  while (n) {
    if (n % 2) c = (c * a) % 1000000007ll;
    a = (a * a) % 1000000007ll;
    n /= 2;
  }
  return c;
}
long long c[104][105], C[105][105], a[10005];
int main() {
  long long n, m, k, x;
  int i, j;
  cin >> n >> m >> k;
  for (i = 0; i <= 100; i++) {
    c[i][0] = 1ll;
    c[i][1] = i;
    for (j = 2; j <= i; j++)
      c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % 1000000007ll;
  }
  for (i = 0; i < n; i++) {
    x = m / n;
    if (m % n > i) x++;
    for (j = 0; j <= n; j++) C[i][j] = lpow(c[n][j], x);
  }
  a[0] = 1ll;
  for (i = 0; i < n; i++) {
    for (j = k; j >= 0; j--)
      for (x = n; x >= 1; x--)
        if (j >= x)
          a[j] = (a[j] + (a[j - x] * C[i][x]) % 1000000007ll) % 1000000007ll;
  }
  cout << a[k] << endl;
  return 0;
}
