#include <bits/stdc++.h>
#pragma GCC optimize("inline", 2)
using namespace std;
const int N = 10005, M = 1e9 + 7;
long long c[105][105], g[105][105], f[105][N];
inline long long qpow(long long x, long long k) {
  long long re = 1;
  for (; k; k >>= 1, x = x * x % M)
    if (k & 1) re = re * x % M;
  return re;
}
int main() {
  long long n, m, o, re = 0;
  cin >> n >> m >> o;
  for (int i = 0; i <= n; ++i) f[i][0] = c[i][0] = 1;
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= i; ++j) c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % M;
  for (int i = 1; i <= n; ++i)
    for (int j = 0; j <= n; ++j) g[i][j] = qpow(c[n][j], (m + n - i) / n);
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= n * i; ++j) {
      for (int k = max(j - n, 0ll); k <= j; ++k) {
        (f[i][j] += f[i - 1][k] * g[i][j - k]) %= M;
      }
    }
  }
  cout << f[n][o];
}
