#include<iostream>
using namespace std;
const int N=50;
int n,m;
int a[N][N];
void dfs()
{
a[1][1]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(i%2==0&&j%2==0) continue;
if(i==1&&j==1) continue;
//排除a[1][1]为了防止对a[1][1]重新赋值 一旦重新赋值之后所有递归结果都是0
else a[i][j]=a[i-1][j]+a[i][j-1];
//从此时的第1,1位置向a[n][m]推 得到结果
//只能向右或下移所以用i-1与j-1
}
}
}
int main()
{
scanf("%d%d",&n,&m);
dfs();
cout<<a[n][m];
return 0;
}