#include <bits/stdc++.h>
using namespace std;

// 注意 这和在********上出现的 走格子不同
// 但可以对应过去当 m=n=1时  实际可走的结点是 2x2的  即m+1, n+1
// 还用递归的方式 转移方程还和走格子一样
// 但边界条件不同!
// dp[x,1] = dp[1,x] = 1 

int myfunc(int p, int q)
{
    if(p==1 || q==1)
    {
        return 1;
    }

    return myfunc(p-1, q) + myfunc(p, q-1);

}

int main() {
    int m, n;
    while (cin >> m >> n) { // 注意 while 处理多个 case
        cout << myfunc(m+1, n+1) << endl;
    }
}
// 64 位输出请用 printf("%lld")