# -*- coding:utf-8 -*-



def cmb(n, r):

    if n == 0 or r == 0:

        return 1

    if n < r:

        return 0

    a = b = 1

    r = min(n-r,r)

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

        a *= i

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

        b *= i

    return b//a



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

M = 10**9 + 7

red = N[0]-N[1]

for i in range(1,N[1]+1):

    x = cmb(red + 1, i) * cmb(N[1] - 1,i-1)

    print((x%M))

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

M = 10**9 + 7

red = N[0] - N[1]

x = red+1

print(x)

for i in range(2,N[1]+1):

    x = x*(red+2-i)*(N[1]-i+1)//(i*(i-1))

    print((int(x%M)))
# -*- coding:utf-8 -*-
def cmb(n, r):
    if n == 0 or r == 0:
        return 1
    if n < r:
        return 0
    a = b = 1
    r = min(n - r, r)
    for i in range(1, r + 1):
        a *= i
    for i in range(n - r + 1, n + 1):
        b *= i
    return b // a


N = list(map(int, input().split()))
M = 10**9 + 7
red = N[0] - N[1]
for i in range(1, N[1] + 1):
    x = cmb(red + 1, i) * cmb(N[1] - 1, i - 1)
    print((x % M))

N = list(map(int, input().split()))
M = 10**9 + 7
red = N[0] - N[1]
x = red + 1
print(x)
for i in range(2, N[1] + 1):
    x = x * (red + 2 - i) * (N[1] - i + 1) // (i * (i - 1))
    print((int(x % M)))

-# -*- coding:utf-8 -*- -def cmb(n, r): -    if n == 0 or r == 0: -        return 1 -    if n < r: -        return 0 -    a = b = 1 -    r = min(n - r, r) -    for i in range(1, r + 1): -        a *= i -    for i in range(n - r + 1, n + 1): -        b *= i -    return b // a - - -for i in range(1, N[1] + 1): -    x = cmb(red + 1, i) * cmb(N[1] - 1, i - 1) -    print((x % M)) +x = red + 1 +print(x) +for i in range(2, N[1] + 1): +    x = x * (red + 2 - i) * (N[1] - i + 1) // (i * (i - 1)) +    print((int(x % M)))