/*
#include <stdio.h>
int a[10001]={0};
int colBlocks(int n) {
if(a[n]!=0) {
return a[n];
}
if(n==1) {
return a[n] = 1;
}
if(n==2) {
return a[n] = 3;
}
return a[n] = (colBlocks(n-1) + (colBlocks(n-2)*2)) % 100007;
}
int main() {
int n;
scanf("%d", &n);
printf("%d", colBlocks(n));
}
*/
/*
#include <stdio.h>
long long int sum = 1;
long long int colBolcks(long long int n) {
n=n-3;
sum = sum * 2;
if(n==0) {
return sum % 100000007;
}
colBolcks(n);
}
int main() {
long long int n;
scanf("%d", &n);
printf("%d", colBolcks(n));
}
*/
/*
#include <stdio.h>
int main() {
long long int n,i;
long long int sum = 1;
scanf("%lld", &n);
if(n%3!=0) {
printf("0");
}
else {
for(i=0; i<=n; i=i+3) {
if(sum>100000007) {
sum = sum % 100000007;
}
sum = sum * 2;
}
printf("%lld", sum/2);
}
}
*/
#include <stdio.h>
int sum=1;
int sum1=1;
int start=1;
int a[31]={0};
void saveArr(int n) {
if(n==0) {
return;
}
a[start]=start;
start++;
saveArr(n-1);
}
void delArr(int r) {
a[r]=1;
if(r==1) {
return;
}
delArr(r-1);
}
int calArr(int n,int r1) {
sum = sum * a[n];
sum1 = sum1 * r1;
if(r1>1) {
calArr(n-1,r1-1);
}
else if(r1==1) {
calArr(n-1,r1);
}
if(n==1) {
return sum/sum1;
}
}
int main() {
int n,r,r1;
scanf("%d %d", &n, &r);
if(n==r) {
printf("1");
}
else if(r==1||r1==1) {
printf("%d", n);
}
else {
r1=n-r;
if(r<r1) {
r=r1;
r1=n-r;
}
saveArr(n);
delArr(r);
printf("%d", calArr(n,r1));
}
}