#思路:最难的是想到动态规划的状态方程,想到了一切就水到渠成
#f(m,n)为m个苹果放n个盘子,可划分为以下两种情况
#每个盘子都放苹果:f(m-n,n)
#允许有盘子空着,f(m,n-1)
def f(m,n):
    if m<=1 or n<=1:
        return 1
    else:
        if m>=n:#可以每个盘子都放苹果
            return f(m-n,n)+f(m,n-1)
        else:#苹果太少放不了
            return f(m,n-1)
m,n=map(int,input().split())
print(f(m,n))