#include <iostream>
#include <cstring> // 用于memset
using namespace std;
int dp[11][11]; // 全局记忆数组,m和n最大为10
int f(int m, int n) {
if (m == 0) return 1; // 没有苹果,只有一种分法
if (n == 0) return 0; // 没有盘子,无法分
if (dp[m][n] != -1) return dp[m][n]; // 已计算过,直接返回
//3种边界情况处理
int res = f(m, n - 1); // 至少有一个空盘的情况
if (m >= n) {
res += f(m - n, n); // 所有盘子至少有一个苹果的情况
}
dp[m][n] = res; // 记录结果
return res;
}
int main() {
int M, N;
while (cin >> M >> N) {
memset(dp, -1, sizeof(dp)); // 每次计算前重置记忆数组
cout << f(M, N) << endl;
}
return 0;
}