#include <bits/stdc++.h>
using namespace std;
const long long P = 1000000007;
const int NICO = 102;
long long C[102][102], A[102][102];
long long n, m, k;
long long dp[102][100002];
long long sum[100002];
long long max(long long x, long long y) { return x > y ? x : y; }
long long pow(long long a, long long n) {
  long long ret = 1;
  while (n) {
    if (n & 1) {
      ret = (ret * a);
      ret %= P;
    }
    a = a * a % P;
    n >>= 1;
  }
  return ret;
}
void init() {
  for (int i = 0; i < NICO; i++) dp[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]) % P;
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j <= n; j++) {
      A[i][j] = pow(C[n][j], (m + n - i) / n);
    }
  }
}
int main() {
  cin >> n >> m >> k;
  init();
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= i * n; j++) {
      for (int k = max(j - n, 0); k <= j; k++) {
        dp[i][j] += dp[i - 1][k] * A[i][j - k] % P;
        dp[i][j] %= P;
      }
    }
  }
  cout << dp[n][k] << endl;
}
