#递归是一种效率不是很高的算法
# import math
# i,j=map(int,input().split())

# def Fab_2_dimension(i,j):
#     if i==1 and j==1:
#         return 1
#     elif i>=2 and j==1:
#         return Fab_2_dimension(i-1,j)
#     elif j>=2 and i==1:
#         return Fab_2_dimension(i,j-1)
#     else:
#         return Fab_2_dimension(i-1,j)+Fab_2_dimension(i,j-1)

# result=Fab_2_dimension(i,j)%(math.pow(10,9)+7)
# print(int(result))


n,m=map(int,input().split())
dp=[[0 for _ in range(m+1)] for _ in range(n+1)]
for i in range(1,n+1):
    for j in range(1,m+1):
        if i==1 or j==1:
            dp[i][j]=1
        else:
            dp[i][j]=(dp[i-1][j]+dp[i][j-1])%(10**9+7)
print(dp[n][m])