//N个盘子,M个苹果   
//i个盘子放j个苹果 
//若j>=i有两种情况
//1:有空盘   2:没有空盘
//若没有空盘 ,则令当前排放种类数 与 每个盘子都减少一个苹果时的排放种类数 相同
//若有空盘,那么当前排放种类数 与 去掉一个空盘时的排放种类数 相同

//若j<i 也就是盘子个数多于苹果数  
//那么当前排放种类数 与去掉一个盘子时的排放种类数相同

//当考虑边界情况时,可以先把状态转移方程写出来,将最初的值带进去,根据题意,写出边界值。



#include<iostream>
using namespace std;
int dp[11][11];//dp[i][j]表示i个盘子里放j个苹果
int main(){
    int M,N;
    cin>>M>>N;
    dp[0][0]=1;
    for(int j=0;j<=M;j++){
        for(int i=1;i<=N;i++){
            if(j>=i){
                dp[i][j]=dp[i][j-i]+dp[i-1][j];
            }else{
                dp[i][j]=dp[i-1][j];
            }
        }
    }
    cout<<dp[N][M];
    return 0;
}