#递归是一种效率不是很高的算法
# 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])