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