import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Scanner;

/**
 * @author eagle2020
 * @date 2021/9/29
 */
public class Main {

    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            int apples = scanner.nextInt();//苹果0 - 10最多(下同,最多)
            int panels = scanner.nextInt();//1-10
            int[][] dp = new int[apples + 1][panels + 1];
            for(int i = 0; i <= apples; i++){
                dp[i][1] = 1;//多少个苹果放在一个盘子上,都只有一种方法
            }
            for(int j = 1; j <= panels; j++){
                dp[1][j] = 1;//只有一个苹果,不管有多少盘子都只有一种方法
                dp[0][j] = 1;
            }
            for(int i = 2; i <= apples; i++){//2个苹果到10个苹果(因为0-1苹果的情况已经在上面处理)
                for(int j = 1; j <= panels; j++){//1个盘子到10个盘子
                    //i个苹果放到j个盘子里的方法数,等于所有盘子都有苹果的方法 + 部分盘子没有苹果的方法
                    //所有盘子都有苹果,等于每个盘子去掉一个苹果,
                    //部分盘子没有苹果,先假设一个盘子没有苹果,剩下的盘子到底怎么分配苹果,慢慢算
                    dp[i][j] = dp[i][j - 1] + (i - j >= 0 ? dp[i - j][j] : 0);
                }
            }
            System.out.println(dp[apples][panels]);
        }

    }
}