/*
#include <stdio.h>
void rec1(int a)
{
if(a == 0) return;
rec1(a - 1);
printf("*");
}
void rec(int a)
{
if(a == 0) return;
rec(a-1);
rec1(a);
printf("\n");
}
int main()
{
int a;
scanf("%d", &a);
rec(a);
}
#include <stdio.h>
void rec(int a)
{
if(a == 0) return;
rec(a/2);
printf("%d", a%2);
}
int main()
{
int a;
scanf("%d", &a);
if(a != 0) rec(a);
else printf("0");
}
//<<memoization : 계산한 숫자는 memo해놓고 다시 계산하지 않도록 하는기법 >>
int memo[201]={};
int fib(int n){
if(memo[n]!=0) return memo[n];
if(n<=2) return memo[n]=1;
return memo[n]= (fib(n-1)+fib(n-2))%10009;
}
#include <stdio.h>
int memo[201] = {};
int f(int a)
{
if(memo[a] != 0) return memo[a];
if(a == 1 || a == 2) return memo[a] = 1;
return memo[a] = (f(a - 1) + f(a - 2)) % 10009;
}
int main()
{
int a;
scanf("%d", &a);
printf("%d", f(a));
}
#include <stdio.h>
int arr[51][51] = {};
int f(int a, int b)
{
if(arr[a][b] != 0)
return arr[a][b];
if(b == 1 || a == 1)
return arr[a][b] = 1;
return arr[a][b] = (f(a - 1, b) + f(a, b - 1)) % 100000000;
}
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("%d", f(a, b));
}
1 => 1
2 => 2
3 => 4
4 => 7
5 => 13
6 => 24
7 => 44
8 => 81
#include <stdio.h>
int memo[10005] = {};
int f(int a)
{
if(memo[a] != 0) return memo[a];
if(a == 1) return memo[a] = 1;
else if(a == 2) return memo[a] = 2;
else if(a == 3) return memo[a] = 4;
return memo[a] = (f(a - 1) + f(a - 2) + f(a - 3)) % 1000;
}
int main()
{
int a;
scanf("%d", &a);
printf("%d", f(a));
}
*/
#include <stdio.h>
int memo[15][15]
int f(int k, int n)
{
return f(k , n - 1) + f(k - 1 , n);
}
int main()
{
int k, n;
while( scanf("%d %d", &k, &n) != EOF )
printf("%d\n", f(k, n));
}



