/*#include <stdio.h>
void f(int n)
{
if(n==1)
{
return ;
}
if(n%2==1)
{
printf("%d\n", 3*n+1);
f(3*n+1);
}
else
{
printf("%d\n", n/2);
f(n/2);
}
}
int main()
{
int a;
scanf("%d", &a);
printf("%d\n", a);
f(a);
return 0;
}
void f(n) : n~ 1
n출력 -> n-1 ~1
n출력 -> f(n-1);
f(n) : 1~n의 합 return
(1 ~ n-1의합 + n)
return f(n-1)+n; (n>1)
return 1; (n==1)
f(1) -> f(0)+1;
int f(int n)
{
if(n==1) return 1;
return f(n-1)+n;
}
int f(int a)
{
if(a==1) return 1;
return f(a-1)*a;
}
//재귀합수+메모이제이션
#include <stdio.h>
int memo[201]={};
int f(int n)
{
if(memo[n]!=0) // 계산한적이 있으면
{
return memo[n];
}
if(n<=2) return memo[n]=1;
return memo[n]=(f(n-1)+f(n-2))%10009;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",f(n));
return 0;
}
*/
#include <stdio.h>
int arr[51][51]={};
int f(int i, int j)
{
if(arr[i][j]!=0)
{
return arr[i][j];
}
if(i==1||j==1) return arr[i][j]=1;
return arr[i][j]=(f(i-1, j)+f(i, j-1))%100000000;
}
int main()
{
int r, c;
scanf("%d %d", &r, &c);
printf("%d", f(r, c));
return 0;
}



