# パスカルの三角形

N, K = map(int, input().split())



m = 1000000007



n = max(K, N - K + 1)

c = [[0] * (n + 1) for _ in range(n + 1)]

c[0][0] = 1

for i in range(1, n + 1):

    c[i][0] = 1

    for j in range(1, i + 1):

        c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % m



result = []

for i in range(1, K + 1):

    result.append(c[K - 1][i - 1] * c[N - K + 1][i] % m)

#print('\n'.join(str(i) for i in result))

print(*result, sep='\n')

# フェルマーの小定理

N, K = list(map(int, input().split()))



m = 1000000007





def make_factorial_table(n):

    result = [0] * (n + 1)

    result[0] = 1

    for i in range(1, n + 1):

        result[i] = result[i - 1] * i % m

    return result





def mcomb(n, k):

    if n == 0 and k == 0:

        return 1

    if n < k or k < 0:

        return 0

    return fac[n] * pow(fac[n - k], m - 2, m) * pow(fac[k], m - 2, m) % m





n = max(K, N - K + 1)

fac = make_factorial_table(n)



result = []

for i in range(1, K + 1):

    result.append(mcomb(K - 1, i - 1) * mcomb(N - K + 1, i) % m)

print(('\n'.join(str(i) for i in result)))

#print(*result, sep='\n')

# パスカルの三角形
N, K = map(int, input().split())
m = 1000000007
n = max(K, N - K + 1)
c = [[0] * (n + 1) for _ in range(n + 1)]
c[0][0] = 1
for i in range(1, n + 1):
    c[i][0] = 1
    for j in range(1, i + 1):
        c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % m
result = []
for i in range(1, K + 1):
    result.append(c[K - 1][i - 1] * c[N - K + 1][i] % m)
# print('\n'.join(str(i) for i in result))
print(*result, sep="\n")

# フェルマーの小定理
N, K = list(map(int, input().split()))
m = 1000000007


def make_factorial_table(n):
    result = [0] * (n + 1)
    result[0] = 1
    for i in range(1, n + 1):
        result[i] = result[i - 1] * i % m
    return result


def mcomb(n, k):
    if n == 0 and k == 0:
        return 1
    if n < k or k < 0:
        return 0
    return fac[n] * pow(fac[n - k], m - 2, m) * pow(fac[k], m - 2, m) % m


n = max(K, N - K + 1)
fac = make_factorial_table(n)
result = []
for i in range(1, K + 1):
    result.append(mcomb(K - 1, i - 1) * mcomb(N - K + 1, i) % m)
print(("\n".join(str(i) for i in result)))
# print(*result, sep='\n')

-# パスカルの三角形 -N, K = map(int, input().split()) +# フェルマーの小定理 +N, K = list(map(int, input().split())) + + +def make_factorial_table(n): +    result = [0] * (n + 1) +    result[0] = 1 +    for i in range(1, n + 1): +        result[i] = result[i - 1] * i % m +    return result + + +def mcomb(n, k): +    if n == 0 and k == 0: +        return 1 +    if n < k or k < 0: +        return 0 +    return fac[n] * pow(fac[n - k], m - 2, m) * pow(fac[k], m - 2, m) % m + + -c = [[0] * (n + 1) for _ in range(n + 1)] -c[0][0] = 1 -for i in range(1, n + 1): -    c[i][0] = 1 -    for j in range(1, i + 1): -        c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % m +fac = make_factorial_table(n) -    result.append(c[K - 1][i - 1] * c[N - K + 1][i] % m) -# print('\n'.join(str(i) for i in result)) -print(*result, sep="\n") +    result.append(mcomb(K - 1, i - 1) * mcomb(N - K + 1, i) % m) +print(("\n".join(str(i) for i in result))) +# print(*result, sep='\n')