#include <bits/stdc++.h>
using namespace std;
const long long MAX_N = 100 + 10, mod = 1e9 + 7;
long long dp[MAX_N][MAX_N * MAX_N], c[MAX_N][MAX_N], e[MAX_N],
    f[MAX_N][MAX_N][MAX_N];
long long power(long long x, long long y) {
  if (!y) {
    return 1;
  } else {
    long long ans = power(x, y / 2);
    ans *= ans;
    ans %= mod;
    if (y % 2) {
      ans *= x;
      ans %= mod;
    }
    return ans;
  }
}
int main() {
  long long n, m, k;
  cin >> n >> m >> k;
  for (long long i = 1; i < n; i++) {
    e[i] = m / n + (m % n >= i);
  }
  e[n] = m / n;
  for (long long i = 0; i <= n; i++) {
    c[i][i] = 1;
    c[i][0] = 1;
  }
  for (long long i = 0; i <= n; i++) {
    for (long long j = 1; j < i; j++) {
      c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % mod;
    }
  }
  for (long long i = 0; i <= n; i++) {
    dp[1][i] = power(c[n][i], e[1]);
  }
  for (int i = 0; i <= n; i++) {
    for (int j = 0; j <= n; j++) {
      for (int g = 1; g <= n; g++) {
        f[i][j][g] = power(c[i][j], e[g]);
      }
    }
  }
  for (long long i = 2; i <= n; i++) {
    for (long long j = 0; j <= n * i; j++) {
      for (long long g = 0; g <= min(n, j); g++) {
        dp[i][j] += (dp[i - 1][j - g] * f[n][g][i]) % mod;
        dp[i][j] %= mod;
      }
    }
  }
  cout << dp[n][k];
}
