import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        Main a = new Main();
        while(scanner.hasNextLine()){
            String[] line = scanner.nextLine().split(" ");
            int n = Integer.parseInt(line[0]);
            int m = Integer.parseInt(line[1]);
            int toRight = a.getNumberOfPaths(n, m, 0, 0, true);
            int toDown = a.getNumberOfPaths(n, m, 0, 0, false);
            System.out.println(toRight + toDown);
        }
    }
    
    public int getNumberOfPaths(int n, int m, int cn, int cm, boolean goRight){
        // already at the destination
        if (n == cn && m == cm){
            return 1;
        }
        // can only move down
        if (n == cn){
            if (goRight){
                return 0;
            }
            return this.getNumberOfPaths(n, m, cn, cm+1, false);
        }
        
        // can only move right
        if (m == cm){
            if (!goRight){
                return 0;
            }
            return this.getNumberOfPaths(n, m, cn+1, cm, true);
        }
        
        // may move to both directions
        if (goRight){
            int toRight = this.getNumberOfPaths(n, m, cn+1, cm, true);
            int toDown = this.getNumberOfPaths(n, m, cn+1, cm, false);
            return toRight + toDown;
        }
        int toRight = this.getNumberOfPaths(n, m, cn, cm+1, true);
        int toDown = this.getNumberOfPaths(n, m, cn, cm+1, false);
        return toRight + toDown;
    }
}