//#include <stdio.h>
//
//void f(int n){
//
// if(n == 0){
// return;
// }
//
// f(n - 1);
// printf("*");
//
//}
//
//
//int main(){
// int n;
// scanf("%d", &n);
//
// f(n);
// return 0;
//}
//#include <stdio.h>
//
//void f(int n){
// if(n == 0){
// return;
// }
//
// f(n - 1);
//
// printf("%d ", n);
//
//
//}
//
//int main(){
// int n;
// scanf("%d", &n);
// f(n);
//
// return 0;
//}
//#include <stdio.h>
//
//int f(int n){
// if(n == 1){
// return 1;
// }
// else {
// return n + f(n - 1);
// }
//
//}
//
//int main(){
// int n;
// scanf("%d", &n);
//
// printf("%d\n", f(n));
//
// return 0;
//}
//#include <stdio.h>
//
//int f(long long int n){
// int temp = n % 10;
//
// if(n == 0){
// return 0;
// }
//
//
// return temp + f((long long int)(n/10));
//
//}
//
//int main(){
// long long int n;
// scanf("%lld", &n);
//
// printf("%lld\n", f(n));
//
// return 0;
//}
//#include <stdio.h>
//
//int f(int n){
// if(n <= 2){
// return 1;
// }
// else {
// return f(n - 1) + f(n - 2);
// }
//}
//
//int main(){
// int n;
// scanf("%d", &n);
//
// printf("%d\n", f(n));
//
//}
//#include <stdio.h>
//
// int memo[1005] = {0};
//
// long long int f(int n){
// if(n <= 2){
// return memo[n] = 1;
// }
// else if(memo[n] != 0){
// return memo[n];
// }
// else {
// return memo[n] = (f(n - 2) + f(n - 1)) %1000000007;
// }
// }
//
//
// int main(){
// int n;
// scanf("%d", &n);
//
// printf("%lld", f(n));
//
// return 0;
// }
//#include <stdio.h>
//
//int f(int n){
// if(n == 1 || n == 2){
// return n;
// }
// else if(n==3) {
// return 4;
// }
//// else if(n == 3){
//// return 1 + f(1) + f(2);
//// }
// else {
// return f(n - 1) + f(n - 2) + f(n-3);
// }
//}
//
//
//int main(){
// int n;
// scanf("%d", &n);
//
// printf("%d\n", f(n));
//
// return 0;
//}
//
//#include <stdio.h>
//
//int memo[50][50] = {0};
//
//int f(int p, int q) {
// if(p == 1 || p == q) {
// return memo[p][q] = 1;
// }
//
// if(memo[p][q] != 0) {
// return memo[p][q];
// }
// return memo[p][q] = f(p - 1, q - 1) + f(p - 1, y);
//}
//
//int main(){
// int p, q;
// scanf("%d %d", &p, &q);
//
// printf("%d\n", f(p, q));
//
// return 0;
//}
#include <stdio.h>
int memo[50][50] = {0};
int f(int p, int q){
if(p == q || p == 1){
return memo[p][q] = 1;
}
else if(memo[p][q] != 0){
return memo[p][q];
}
else {
return memo[p][q] = f(p - 1, q - 1) + f(p - 1, q);
}
}
int main(){
int p, q;
scanf("%d %d", &p, &q);
printf("%d\n", f(p, q));
return 0;
}