/*
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
*/
/*
#include <stdio.h> //함수 2개..?
void star(int n)
{
if(n==0) return;
star(n-1);
printf("*"); --(2)수 받아서 별 n개 출력하기
}
void rec(int n)
{
if(n==0)return;
rec(n-1);
star(n); --(1)star로 수 보내기
printf("\n");---(3)star에ㅅ서 한 줄의 별 출력하고 다시 줄 바꿔주기
}
int main()
{
int n;
scanf("%d",&n);
rec(n);
}
*/
/*
rec(0)=1...?
rec(1)=1
rec(2)=2
rec(3)=4
rec(4)=7
rec(5)=13
규칙=3단 피보나치
memoization 메모
*/
/*
#include <stdio.h>
int memo[100001]={};
int rec(int n)
{
if(memo[n]!=0) return memo[n];
if(n==1) return memo[n]=1;
else if(n==2) return memo[n]=2;
else if(n==3) return memo[n]=4;
return memo[n]=(rec(n-1)+rec(n-2)+rec(n-3))%1000;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",rec(n)); --3704 재귀함수 계단 오르기2
return 0;
}
*/
/*
#include <stdio.h>
int memo[100010]={};
int rec(int n)
{
if(memo[n]!=0) return memo[n];
if(n==1||n==2) return memo[n]=1;
return memo[n]=(rec(n-1)+rec(n-2))%10009;
}
int main()
{
int n;
scanf("%d",&n); --1916 재귀함수 피보나치수열(Large)
printf("%d",rec(n));
return 0;
}
*/
#include <stdio.h>
int memo[51][51]={};
int rec(int r,int c)
{
if(memo[r][c]!=0) return memo[r][c];
if(r==1||c==1) return 1;
return memo[r][c]=(rec(r,c-1)+rec(r-1,c))%100000000;
}
int main() ------3702 재귀함수 파스칼 삼각형 2
{
int r,c;
scanf("%d %d",&r,&c);
printf("%d",rec(r,c));
}