#include <bits/stdc++.h>
using namespace std;
// 非递归 只是动态规划

int myfun(int m, int n)
{
    vector<vector<int>> dp(m+1, vector<int>(n+1, 0));

    for(int j=0; j<=n; ++j)
    {
        dp[0][j] = 1;
    }

    for(int i=0; i<=m; ++i)
    {
        dp[i][1] = 1;
    }

    for(int i=0; i<=m; ++i)
    {
        for(int j=1; j<=n; ++j)
        {
            if(j>i)
            {
                dp[i][j] = dp[i][i];
            }
            else {
                dp[i][j] = dp[i][j-1] + dp[i-j][j];
            }
        }
    }

    return dp[m][n];
}

int main() {
    int m, n;
    while (cin >> m >> n) { // 注意 while 处理多个 case
        cout<<myfun(m, n)<<endl;
    }
}
// 64 位输出请用 printf("%lld")