/*
n * m
动态规划
1.动态表示
f[i][j]:到达[i][j]的方案数量
2.动态计算
// 从左边或者上边到来
f[i][j] += f[i - 1][j] + f[i][j - 1];
*/
#include <iostream>
using namespace std;
int f[30][30];
bool st[30][30];
int main()
{
int n, m;
cin >> n >> m;
if((n % 2 == 0) && (m % 2 == 0))
{
cout << 0 << endl;
return 0;
}
f[1][1] = 1;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
if((i % 2 == 0) && (j % 2 == 0)) st[i][j] = true; // 不可走
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
if(!st[i][j]) // 可走
{
f[i][j] += f[i - 1][j] + f[i][j - 1];
}
cout << f[n][m] << endl;
return 0;
}