//f(n) : 1부터 n 까지의합
/*
f(n) 1 ~n
1 ~ n-1 + n
f(n-1)+n
*/
/*
#include <stdio.h>
int f(int n)
{
if(n==0) return 0;
return f(n-1)+n;
}
int main()
{
int n;
scanf("%d", &n);
printf("%d",f(n));
}
*/
/*
#include <stdio.h>
int f(int n)
{
if(n==1) return 1;
return f(n-1)*n;
}
int main()
{
int n;
scanf("%d", &n);
printf("%d",f(n));
}
*/
/*
#include<stdio.h>
void f(int n)
{
if(n==1)
{
printf("1");
}
else if(n%2==0)
{
printf("%d\n", n);
f(n/2);
}
else
{
printf("%d\n", n);
f(n*3+1);
}
}
int main()
{
int n;
scanf("%d", &n);
f(n);
}
*/
/*
#include<stdio.h>
void g(int a)
{
if(a==0)
return ;
printf("*");
g(a-1);
}
void f(int a)
{
if(a==0)
return ;
f(a-1);
g(a);
printf("\n");
}
int main()
{
int a;
scanf("%d", &a);
f(a);
}
*/
/*
#include<stdio.h>
int memo[201]={};
int f(int n)
{
if(memo[n]!=0) return memo[n];
if(n==1 ||n==2)
return memo[n]=1;
return memo[n]=(f(n-2)+f(n-1))%10009;
}
int main()
{
int n;
scanf("%d", &n);0
printf("%d",f(n));
}
*/
#include<stdio.h>
int memo[51][51]={};
int f(int x, int y)
{
if(memo[x][y]!=0)
return memo[x][y];
if(x==1||y==1)
return memo[x][y]=1;
else
return memo[x][y]=(f(x-1, y)+f(x, y-1))%100000000;
}
int main()
{
int x, y;
scanf("%d %d", &x, &y);
printf("%d", f(x,y));
}