def comb(n, r):

  if n < 0 or r < 0:

    raise ValueError

  r = min(r, n - r)

  if n == 0 or r == 0:

    return 1

  return (n - r + 1) * comb(n, r - 1) // r



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

for i in range(K):

  if N - K + 1 < i + 1:

    print('0')

    continue

  print((comb(N - K + 1, i + 1) * comb(K - 1, i) % (10 ** 9 + 7)))
N, K = list(map(int, input().split()))

a = N - K + 1

print(a)

for i in range(1, K):

  a = a * (N - K + 1 - i) * (K - i) // ((i + 1) * i)

  print((a % (10 ** 9 + 7)))
def comb(n, r):
    if n < 0 or r < 0:
        raise ValueError
    r = min(r, n - r)
    if n == 0 or r == 0:
        return 1
    return (n - r + 1) * comb(n, r - 1) // r


N, K = list(map(int, input().split()))
for i in range(K):
    if N - K + 1 < i + 1:
        print("0")
        continue
    print((comb(N - K + 1, i + 1) * comb(K - 1, i) % (10**9 + 7)))

N, K = list(map(int, input().split()))
a = N - K + 1
print(a)
for i in range(1, K):
    a = a * (N - K + 1 - i) * (K - i) // ((i + 1) * i)
    print((a % (10**9 + 7)))

-def comb(n, r): -    if n < 0 or r < 0: -        raise ValueError -    r = min(r, n - r) -    if n == 0 or r == 0: -        return 1 -    return (n - r + 1) * comb(n, r - 1) // r - - -for i in range(K): -    if N - K + 1 < i + 1: -        print("0") -        continue -    print((comb(N - K + 1, i + 1) * comb(K - 1, i) % (10**9 + 7))) +a = N - K + 1 +print(a) +for i in range(1, K): +    a = a * (N - K + 1 - i) * (K - i) // ((i + 1) * i) +    print((a % (10**9 + 7)))