#include using namespace std; vector>> quotient_ranges(long long N){ vector>> ans; for (long long i = 1; i * i <= N; i++){ ans.push_back(make_pair(N / i, make_pair(i, i))); } for (long long i = N / ((long long) sqrt(N) + 1); i >= 1; i--){ ans.push_back(make_pair(i, make_pair(N / (i + 1) + 1, N / i))); } return ans; } int main(){ int N; long long K; cin >> N >> K; vector>> R = quotient_ranges(K); reverse(R.begin(), R.end()); int M = R.size(); vector> dp(N + 1, vector(M, 0)); dp[0][M - 1] = 1; for (int i = 0; i < N; i++){ for (int j = 0; j < M; j++){ dp[i + 1][j] += dp[i][j]; long long x = R[j].first / (i + 1); if (x > 0){ int p = lower_bound(R.begin(), R.end(), make_pair(x, make_pair((long long) -1, (long long) -1))) - R.begin(); dp[i + 1][p] += dp[i][j]; } } } int ans = 0; for (int i = 0; i <= M; i++){ ans += dp[N][i]; } ans--; cout << ans << endl; }