while True:
    try:
        n,m=map(int,input().split())
        c=[[1 for i in range(m+1)] for j in range(n+1)] #初始化边界全为1
        for i in range(1,n+1):
            for j in range(1,m+1):
                 #大家会奇怪为啥第三个c[i][j-1]的是j-1,根据动态规划法C[I][J]=C[I-1][J]+C[I][J+1]才对啊
                 #这是因为两层for的原因,都是从1 起步。所以就相当于从右上角到左下角的向下走法,两种走法的结果一致
                c[i][j]=c[i-1][j]+c[i][j-1]  
        print(c[n][m])
    except:
        break