/*递归思想*/
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];
    }
}