func_code_string: #include <bits/stdc++.h>   using namespace std;   long long int c[104][104];   long long int dp[104][104 * 104];   long long int mul[104][104];   long long int pw(long long int x, long long int y) {     long long int ans(1);     while (y) {       if (y & 1) ans = (ans * x) % 1000000007;       x = (x * x) % 1000000007;       y >>= 1;     }     return ans;   }   int main() {     long long int n, m, k;     cin >> n >> m >> k;     c[1][0] = c[1][1] = 1;     for (long long int i(2); i <= 100; ++i) {       c[i][i] = c[i][0] = 1;       c[i][1] = i;       for (long long int j(2); j < i; ++j) {         c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % 1000000007;       }     }     for (long long int i(0); i < n; ++i) {       for (long long int j(0); j <= n; ++j) {         mul[i][j] = pw(c[n][j], (m - i - 1) / n + 1);       }     }     dp[0][0] = 1;     for (long long int i(0); i < n; ++i) {       for (long long int j(0); j <= k; ++j) {         if (dp[i][j] == 0) continue;         for (long long int kk(0); kk <= n && j + kk <= k; ++kk) {           dp[i + 1][j + kk] =               (dp[i + 1][j + kk] + dp[i][j] * mul[i][kk]) % 1000000007;         }       }     }     cout << dp[n][k] << endl;     return 0;   }   