MOD = 10**9+7
W, H = map(int, input().split())
W-=1 # コードを見やすくする
H-=1 # コードを見やすくする
mx = 2*10**5
fact = [1] * (mx+1) # 階乗を格納するリスト
def inv(n): # MODを法とした逆元
    return pow(n, MOD-2, MOD)
for i in range(mx):
    fact[i+1] = fact[i] * (i+1) % MOD # 階乗を計算
ans = (fact[W+H] * inv(fact[W]) * inv(fact[H])) % MOD # comb(W+H,W) = (W+H)!/(W!H!)
print (ans)
34fa92613342ea8349ecdd60659e30b466347817
<mask token>

<mask token>


def inv(n):
    return pow(n, MOD - 2, MOD)


<mask token>

<mask token>
W -= 1
H -= 1
<mask token>


def inv(n):
    return pow(n, MOD - 2, MOD)


for i in range(mx):
    fact[i + 1] = fact[i] * (i + 1) % MOD
<mask token>
print(ans)

MOD = 10 ** 9 + 7
W, H = map(int, input().split())
W -= 1
H -= 1
mx = 2 * 10 ** 5
fact = [1] * (mx + 1)


def inv(n):
    return pow(n, MOD - 2, MOD)


for i in range(mx):
    fact[i + 1] = fact[i] * (i + 1) % MOD
ans = fact[W + H] * inv(fact[W]) * inv(fact[H]) % MOD
print(ans)

MOD = 10**9+7
W, H = map(int, input().split())
W-=1 # コードを見やすくする
H-=1 # コードを見やすくする
mx = 2*10**5
fact = [1] * (mx+1) # 階乗を格納するリスト
def inv(n): # MODを法とした逆元
    return pow(n, MOD-2, MOD)
for i in range(mx):
    fact[i+1] = fact[i] * (i+1) % MOD # 階乗を計算
ans = (fact[W+H] * inv(fact[W]) * inv(fact[H])) % MOD # comb(W+H,W) = (W+H)!/(W!H!)
print (ans)