#include <iostream>
using namespace std;
int dp[11][11];
/**
* 递归
* m为0,一种;m为1两种;n为0一种;n为1两种
*/
int fio(int m,int n){
if (m<=1 || n<=1) return 1;
if (m<n) return fio(m,m);
return fio(m,n-1) + fio(m-n,n);
}
/**
* 动态规划
* 把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放
* dp[i][j]表示把i个苹果放到j个盘子的放法
* dp[0][j] = 1,dp[i][0] = 1
*/
int apple(int m,int n){
for (int i = 0; i <= m; ++i) {
for (int j = 1; j <= n; ++j) {
if (i<=1 || j==1) dp[i][j] = 1;
else if (i<j) 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){
cout<<apple(m,n)<<endl;
}
return 0;
}