/*
f(n) : 1 ~ n합 리턴
1~n-1합 + n 리턴
f(n-1) + n 리턴
f(3) : f(2) + 3
f(2) : f(1) + 2
f(1) : f(0) + 1
f(0) : f(-1) + 0
f(-1) : f(-2) +(-1)
*/
/*
#include<stdio.h>
int f(int m)
{
if(m==0)
{
return 0;
}
return f(m-1)+m;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",f(n));
return 0;
}
*/
/*
#include<stdio.h>
int f(int m)
{
if(m==1)
{
return 1;
}
return f(m-1)*m;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",f(n));
return 0;
}
*/
/*
1 1 2 3 5 8 13 21
f(1)+f(2)+f(3)+...
f(3)=f(2)+f(1)
f(2)=1
f(1)=1
*/
/*
#include<stdio.h>
int f(int M)
{
if(M==1 || M==2)
{
return 1;
}
return f(M-1)+f(M-2);
}
int main()
{
int N;
scanf("%d",&N);
printf("%d",f(N));
return 0;
}
*/
/*
#include<stdio.h>
long long int f(long long int m)
{
if(m/10==0)
{
return m;
}
return f(m/10)+m%10;
}
long long int main()
{
long long int n;
scanf("%lld",&n);
printf("%lld",f(n));
return 0;
}
*/
/*
#include<stdio.h>
int f(int m)
{
if(m/2==0)
{
printf("%d",m);
return;
}
f(m/2);
printf("%d",m%2);
}
int main()
{
int n;
scanf("%d",&n);
f(n);
return 0;
}
*/
/*
#include<stdio.h> 진법
int f(int m, int t)
{
}
int main()
{
int n,k;
scanf("%d %d",&n,&k);
printf("%d",f(n,k));
return 0;
}
*/
/*
#include<stdio.h>
long long int f(int m, int t)
{
if(t==0)
{
return 1;
}
long long int a=f(m,t/2);
if(t%2==0)
{
return a*a;
}
else
{
return m*a*a;
}
}
long long int main()
{
int n,k;
scanf("%d %d",&n,&k);
printf("%lld",f(n,k));
return 0;
}
*/
#include<stdio.h>
int f(int m, int s)
{
if(m==1 || m==s)
{
return 1;
}
else if(s==1)
{
return m;
}
return f(m-1,1)*m/(f(s-1,1)*s*f(m-s-1,1)*(m-s-1));
}
int main()
{
int n,r;
scanf("%d %d",&n,&r);
printf("%d",f(n,r));
return 0;
}



