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

mod=10**9+7

#青K個　赤NーK個

#青をi個に分ける　K-1Ci-1 

#赤１個以上を仕切りに振り分ける  (両端含むが、両端は０でもOK)

#N-KCi-2+N-KCi-1+N-KCi

#1997C1+



from operator import mul

from functools import reduce



def cmb(n,r):

  r = min(n-r,r)

  if r == 0: return 1

  over = reduce(mul, list(range(n, n - r, -1)))

  under = reduce(mul, list(range(1,r + 1)))

  return over // under



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

  if i==1:

    print(((N-K+1)%mod))

  else:

    try:

      a=cmb(N-K-1, i-2)%mod

    except:

      a=0

    try:

      b=cmb(N-K-1, i-1)%mod

    except:

      b=0

    try:

      c=cmb(N-K-1, i)%mod

    except:

      c=0

    try:

      d=cmb(K-1, i-1)%mod

    except:

      d=0

      

    ans=(a+2*b+c)*d

    print((ans%mod))
n,k=list(map(int, input().split()))

def cmb(n, r, p):

  if (r < 0) or (n < r):

    return 0

  r = min(r, n - r)

  return fact[n] * factinv[r] * factinv[n-r] % p



p = 10 ** 9 + 7

N = 2000  # N は必要分だけ用意する

fact = [1, 1]  # fact[n] = (n! mod p) 階乗のmod

factinv = [1, 1]  # factinv[n] = ((n!)^(-1) mod p)

inv = [0, 1]  # factinv 計算用

 

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

  fact.append((fact[-1] * i) % p)

  inv.append((-inv[p % i] * (p // i)) % p)

  factinv.append((factinv[-1] * inv[-1]) % p)



for i in range(k):

    ans=(cmb(k-1,i,p)*cmb(n-k+1,i+1,p))%p

    print(ans)
N, K = list(map(int, input().split()))
mod = 10**9 + 7
# 青K個　赤NーK個
# 青をi個に分ける　K-1Ci-1
# 赤１個以上を仕切りに振り分ける  (両端含むが、両端は０でもOK)
# N-KCi-2+N-KCi-1+N-KCi
# 1997C1+
from operator import mul
from functools import reduce


def cmb(n, r):
    r = min(n - r, r)
    if r == 0:
        return 1
    over = reduce(mul, list(range(n, n - r, -1)))
    under = reduce(mul, list(range(1, r + 1)))
    return over // under


for i in range(1, K + 1):
    if i == 1:
        print(((N - K + 1) % mod))
    else:
        try:
            a = cmb(N - K - 1, i - 2) % mod
        except:
            a = 0
        try:
            b = cmb(N - K - 1, i - 1) % mod
        except:
            b = 0
        try:
            c = cmb(N - K - 1, i) % mod
        except:
            c = 0
        try:
            d = cmb(K - 1, i - 1) % mod
        except:
            d = 0
        ans = (a + 2 * b + c) * d
        print((ans % mod))

n, k = list(map(int, input().split()))


def cmb(n, r, p):
    if (r < 0) or (n < r):
        return 0
    r = min(r, n - r)
    return fact[n] * factinv[r] * factinv[n - r] % p


p = 10**9 + 7
N = 2000  # N は必要分だけ用意する
fact = [1, 1]  # fact[n] = (n! mod p) 階乗のmod
factinv = [1, 1]  # factinv[n] = ((n!)^(-1) mod p)
inv = [0, 1]  # factinv 計算用
for i in range(2, N + 1):
    fact.append((fact[-1] * i) % p)
    inv.append((-inv[p % i] * (p // i)) % p)
    factinv.append((factinv[-1] * inv[-1]) % p)
for i in range(k):
    ans = (cmb(k - 1, i, p) * cmb(n - k + 1, i + 1, p)) % p
    print(ans)

-N, K = list(map(int, input().split())) -mod = 10**9 + 7 -# 青K個　赤NーK個 -# 青をi個に分ける　K-1Ci-1 -# 赤１個以上を仕切りに振り分ける  (両端含むが、両端は０でもOK) -# N-KCi-2+N-KCi-1+N-KCi -# 1997C1+ -from operator import mul -from functools import reduce +n, k = list(map(int, input().split())) -def cmb(n, r): -    r = min(n - r, r) -    if r == 0: -        return 1 -    over = reduce(mul, list(range(n, n - r, -1))) -    under = reduce(mul, list(range(1, r + 1))) -    return over // under +def cmb(n, r, p): +    if (r < 0) or (n < r): +        return 0 +    r = min(r, n - r) +    return fact[n] * factinv[r] * factinv[n - r] % p -for i in range(1, K + 1): -    if i == 1: -        print(((N - K + 1) % mod)) -    else: -        try: -            a = cmb(N - K - 1, i - 2) % mod -        except: -            a = 0 -        try: -            b = cmb(N - K - 1, i - 1) % mod -        except: -            b = 0 -        try: -            c = cmb(N - K - 1, i) % mod -        except: -            c = 0 -        try: -            d = cmb(K - 1, i - 1) % mod -        except: -            d = 0 -        ans = (a + 2 * b + c) * d -        print((ans % mod)) +p = 10**9 + 7 +N = 2000  # N は必要分だけ用意する +fact = [1, 1]  # fact[n] = (n! mod p) 階乗のmod +factinv = [1, 1]  # factinv[n] = ((n!)^(-1) mod p) +inv = [0, 1]  # factinv 計算用 +for i in range(2, N + 1): +    fact.append((fact[-1] * i) % p) +    inv.append((-inv[p % i] * (p // i)) % p) +    factinv.append((factinv[-1] * inv[-1]) % p) +for i in range(k): +    ans = (cmb(k - 1, i, p) * cmb(n - k + 1, i + 1, p)) % p +    print(ans)