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