func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N_MAX = 102;   const int K_MAX = 10002;   const int MOD = 1e9 + 7;   int pwr(int a, long long b) {     if (b == 0) return 1;     if (b & 1) return 1LL * a * pwr(a, (b ^ 1)) % MOD;     int aux = pwr(a, (b >> 1));     return 1LL * aux * aux % MOD;   }   int n, k;   long long m;   int comb[N_MAX];   int pw[N_MAX][N_MAX];   int dp[N_MAX][K_MAX];   int main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     cin >> n >> m >> k;     for (int i = 0; i <= n; i++) {       comb[i] = 1;       for (int j = i + 1; j <= n; j++) comb[i] = 1LL * comb[i] * j % MOD;       for (int j = 1; j <= n - i; j++)         comb[i] = 1LL * comb[i] * pwr(j, MOD - 2) % MOD;     }     for (int c = 0; c <= n; c++)       for (int i = 1; i <= n; i++) pw[c][i] = pwr(comb[c], (m - i) / n + 1);     dp[0][0] = 1;     for (int i = 1; i <= n; i++)       for (int j = 0; j <= k; j++) {         for (int c = 0; c <= j && c <= n; c++) {           dp[i][j] += 1LL * dp[i - 1][j - c] * pw[c][i] % MOD;           if (dp[i][j] >= MOD) dp[i][j] -= MOD;         }       }     cout << dp[n][k] <<   n ;     return 0;   }   