/*递归思想*/
import java.util.*;
public class Main{
public static void main(String[] arg){
Scanner s=new Scanner(System.in);
while(s.hasNextLine()){
String[] strArr=s.nextLine().split(" ");
if(Integer.valueOf(strArr[0])>=0&&Integer.valueOf(strArr[0])<=10&&
Integer.valueOf(strArr[1])>=1&&Integer.valueOf(strArr[1])<=10){
System.out.println(seperate(Integer.valueOf(strArr[0]),Integer.valueOf(strArr[1])));
}
}
}
public static int seperate(int m,int n){
if(n==1||m==0){
return 1;
}
if(m<n){
return seperate(m,m);
}
return seperate(m,n-1)+seperate(m-n,n);
}
}
/*动态规划*/
import java.util.Scanner;
public class Main {
public static void main(String[] arg) {
Scanner s = new Scanner(System.in);
while (s.hasNextLine()) {
String[] strArr = s.nextLine().split(" ");
if (Integer.valueOf(strArr[0]) >= 0 && Integer.valueOf(strArr[0]) <= 10 &&
Integer.valueOf(strArr[1]) >= 1 && Integer.valueOf(strArr[1]) <= 10) {
System.out.println(seperate(Integer.valueOf(strArr[0]), Integer.valueOf(strArr[1])));
}
}
}
private static int seperate(int m, int n) {
int[][] result = new int[m + 1][n + 1];
for (int i = 0; i < m + 1; i++) {
result[i][1] = 1;
result[i][0] = 0;
}
for (int j = 0; j < n + 1; j++) {
result[0][j] = 1;
result[1][j] = 1;
}
for (int i = 2; i < m + 1; i++) {
for (int j = 2; j < n + 1; j++) {
if (i < j) {
result[i][j] = result[i][i];
} else {
result[i][j] = result[i][j - 1] + result[i - j][j];
}
}
}
return result[m][n];
}
}