#include #include #include using namespace std; // TLE, MLE, RE想定 int main(){ int k, n; cin >> k >> n; long long l = 1; for (long long i = 2; i <= n; i++){ l = lcm(l, i); } vector dp(l + 1); dp[0] = 1; for (int i = 0; i < k; i++){ vector ndp(l + 1); for (int j = 0; j <= l; j++){ for (int x = 1; x <= n; x++){ int cake = l / x; if (j + cake <= l) ndp[j + cake] += dp[j]; } } swap(dp, ndp); } cout << dp[l] << endl; }