import sys
from functools import lru_cache
input = sys.stdin.readline
sys.setrecursionlimit(10**9+7)
MOD = 10**9+7
@lru_cache(maxsize=None)
def inv(i):#模拟元
return pow(i, MOD-2, MOD)
@lru_cache(maxsize=None)
def fac(i): # 阶乘[1,i]
if i == 0:#也是特判
return 1
if i == 1:#递归终止条件
return 1
return fac(i-1)*i % MOD
@lru_cache(maxsize=None)
def C(n, m):#组合数计算函数
if m > n or m < 0:#过滤过滤不合法的数
return 0
if n == 0 or n == m:#特判
return 1
z = fac(n)
m = fac(m)*fac(n-m)
return z*inv(m) % MOD
def solve():
x, y = map(int, input().split())
ans = []
for i in range(1, x+y+1):
a = (i + 1) // 2 - 1#其中一方段数
b = i // 2 - 1#另一方段数
t = (C(x-1, a) * C(y-1, b) +
C(x-1, b) * C(y-1, a)) % MOD#计算其中一方多一或者双方段数相同
ans.append(t)
print("\n".join(map(str, ans)))
solve()