n, m = map(int, input().split())
mod = 10**9 + 7
# 正确初始化n行m列的二维数组
a = [[0] * m for _ in range(n)]
# 起点初始化为1
a[0][0] = 1
for i in range(n):
for j in range(m):
if i == 0 and j == 0: # 起点已经初始化过
continue
# 正确的递推公式:从上边来 + 从左边来
from_top = a[i-1][j] if i > 0 else 0
from_left = a[i][j-1] if j > 0 else 0
a[i][j] = (from_top + from_left) % mod
print(a[n-1][m-1]) # 注意是n-1和m-1,因为索引从0开始
'''
n,m=map(int,input().split())
a = [[0] * (m+1) for _ in range(n+1)]#初始化二维数组,不要漏了
a[0][0]=1#定义初始值
a[1][0]=1
a[0][1]=1
for i in range(0,n):
for j in range(0,m):
from_top = a[i][j+1]
from_left = a[i+1][j]
a[i+1][j+1] = from_top + from_left
print(a[n-1][m-1]%(10**9+7))
'''
'''
if i > 0 else 0
if j > 0 else 0
a[i][j]=a[i-1][j]+a[i][j-1]
'''