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]);
}
}
}