import math

mod=10**9+7

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

def f(x):

  if x<0:

    return 1

  else:

    return math.factorial(x)

def c(x,y):

  if x<y or y<0:

    return 0

  elif y==0:

    return 1

  else:

    return f(x)//f(x-y)//f(y)

if k==1:

  print(n)

elif n==k:

  print((1))

  for i in range(n-1):

    print((0))

else:  

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

    ans=c(k-1,i-1)

    ans*=(c(n-k-1,i)+2*c(n-k-1,i-1)+c(n-k-1,i-2))

    print((ans%mod))
import sys

input=lambda: sys.stdin.readline().rstrip()

mod=10**9+7

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

n_max=2*(10**5+1)

F,FI=[0]*(n_max+1),[0]*(n_max+1)

F[0],FI[0]=1,1

for i in range(n_max):

  F[i+1]=(F[i]*(i+1))%mod

FI[n_max-1]=pow(F[n_max-1],mod-2,mod)

for i in reversed(list(range(n_max-1))):

  FI[i]=(FI[i+1]*(i+1))%mod

def comb(x,y):

  return (F[x]*FI[x-y]*FI[y])%mod



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

  if n-k<i-1:

    print((0))

  else:

    print(((comb(k-i+i-1,k-i)*comb(n-k-(i-1)+i,n-k-(i-1)))%mod))
import math

mod = 10**9 + 7
n, k = list(map(int, input().split()))


def f(x):
    if x < 0:
        return 1
    else:
        return math.factorial(x)


def c(x, y):
    if x < y or y < 0:
        return 0
    elif y == 0:
        return 1
    else:
        return f(x) // f(x - y) // f(y)


if k == 1:
    print(n)
elif n == k:
    print((1))
    for i in range(n - 1):
        print((0))
else:
    for i in range(1, k + 1):
        ans = c(k - 1, i - 1)
        ans *= c(n - k - 1, i) + 2 * c(n - k - 1, i - 1) + c(n - k - 1, i - 2)
        print((ans % mod))

import sys

input = lambda: sys.stdin.readline().rstrip()
mod = 10**9 + 7
n, k = list(map(int, input().split()))
n_max = 2 * (10**5 + 1)
F, FI = [0] * (n_max + 1), [0] * (n_max + 1)
F[0], FI[0] = 1, 1
for i in range(n_max):
    F[i + 1] = (F[i] * (i + 1)) % mod
FI[n_max - 1] = pow(F[n_max - 1], mod - 2, mod)
for i in reversed(list(range(n_max - 1))):
    FI[i] = (FI[i + 1] * (i + 1)) % mod


def comb(x, y):
    return (F[x] * FI[x - y] * FI[y]) % mod


for i in range(1, k + 1):
    if n - k < i - 1:
        print((0))
    else:
        print(
            (
                (
                    comb(k - i + i - 1, k - i)
                    * comb(n - k - (i - 1) + i, n - k - (i - 1))
                )
                % mod
            )
        )

-import math +import sys +input = lambda: sys.stdin.readline().rstrip() +n_max = 2 * (10**5 + 1) +F, FI = [0] * (n_max + 1), [0] * (n_max + 1) +F[0], FI[0] = 1, 1 +for i in range(n_max): +    F[i + 1] = (F[i] * (i + 1)) % mod +FI[n_max - 1] = pow(F[n_max - 1], mod - 2, mod) +for i in reversed(list(range(n_max - 1))): +    FI[i] = (FI[i + 1] * (i + 1)) % mod -def f(x): -    if x < 0: -        return 1 -    else: -        return math.factorial(x) +def comb(x, y): +    return (F[x] * FI[x - y] * FI[y]) % mod -def c(x, y): -    if x < y or y < 0: -        return 0 -    elif y == 0: -        return 1 +for i in range(1, k + 1): +    if n - k < i - 1: +        print((0)) -        return f(x) // f(x - y) // f(y) - - -if k == 1: -    print(n) -elif n == k: -    print((1)) -    for i in range(n - 1): -        print((0)) -else: -    for i in range(1, k + 1): -        ans = c(k - 1, i - 1) -        ans *= c(n - k - 1, i) + 2 * c(n - k - 1, i - 1) + c(n - k - 1, i - 2) -        print((ans % mod)) +        print( +            ( +                ( +                    comb(k - i + i - 1, k - i) +                    * comb(n - k - (i - 1) + i, n - k - (i - 1)) +                ) +                % mod +            ) +        )