#include <bits/stdc++.h>
using namespace std;
const int oo = (int)1e9 + 7;
int n, k;
long long m;
long long C[107][107];
long long f[2][10007], g[107][107];
long long Power(long long u, long long v) {
  if (v == 0) return 1;
  if (v == 1) return u;
  long long temp = Power(u, v / 2);
  if (v % 2)
    return (((temp * temp) % oo) * u) % oo;
  else
    return (temp * temp) % oo;
}
int main() {
  cin >> n >> m >> k;
  memset(C, 0, sizeof(C));
  memset(f, 0, sizeof(f));
  C[0][0] = 1;
  for (int i = 1; i <= n; i++)
    for (int j = 0; j <= i; j++) {
      C[i][j] = C[i - 1][j];
      if (j >= 1) C[i][j] = (C[i][j] + C[i - 1][j - 1]) % oo;
    }
  long long id = m % n;
  long long d = m / n;
  f[0][0] = 1;
  for (int i = 1; i <= n; i++) {
    for (int t = 0; t <= n; t++) g[t][i] = Power(C[n][t], d + (i <= id));
  }
  for (int i = 1; i <= n; i++)
    for (int j = 0; j <= min(n * i, k); j++) {
      f[i % 2][j] = 0;
      for (int t = 0; t <= min(j, n); t++) {
        f[i % 2][j] = (f[i % 2][j] + f[(i - 1) % 2][j - t] * g[t][i]) % oo;
      }
    }
  cout << f[n % 2][k] << endl;
}
