def factorials(M):#M!までのリストｘと其の逆元のリストyを返すmod INF

    INF=int(1e9+7)

    fac=[0]*(M+1)

    finv=[0]*(M+1)

    inv=[0]*(M+1)

    fac[0]=fac[1]=1

    finv[0]=finv[1]=1

    inv[1]=1

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

        fac[i]=(fac[i-1]*i)%INF

        inv[i]=INF-(inv[INF%i]*(INF//i))%INF

        finv[i]=finv[i-1]*inv[i]%INF

    return fac,finv

def nCr(n,r):

    INF=int(1e9+7)

    if n<r or r<0 or n<0 :

        return 0

    return fac[n]*(finv[r]*finv[n-r]%INF)%INF

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

MOD=10**9+7

fac,finv=factorials(10**5)

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

    #N-K+1このポケットにi個選ぶ

    l=nCr(N-K+1,i)

    s=nCr(K-1,i-1)

    print(((l*s)%MOD))

def factorials(M):#M!までのリストｘと其の逆元のリストyを返すmod INF

    INF=int(1e9+7)

    fac=[0]*(M+1)

    finv=[0]*(M+1)

    inv=[0]*(M+1)

    fac[0]=fac[1]=1

    finv[0]=finv[1]=1

    inv[1]=1

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

        fac[i]=(fac[i-1]*i)%INF

        inv[i]=INF-(inv[INF%i]*(INF//i))%INF

        finv[i]=finv[i-1]*inv[i]%INF

    return fac,finv

def nCr(n,r):

    INF=int(1e9+7)

    if n<r or r<0 or n<0 :

        return 0

    return fac[n]*(finv[r]*finv[n-r]%INF)%INF

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

fac,finv=factorials(N)

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

    a=nCr(N-K+1,i)

    b=nCr(K-i+(i-1),i-1)

    print(((a*b)%(10**9+7)))

def factorials(M):  # M!までのリストｘと其の逆元のリストyを返すmod INF
    INF = int(1e9 + 7)
    fac = [0] * (M + 1)
    finv = [0] * (M + 1)
    inv = [0] * (M + 1)
    fac[0] = fac[1] = 1
    finv[0] = finv[1] = 1
    inv[1] = 1
    for i in range(2, M + 1):
        fac[i] = (fac[i - 1] * i) % INF
        inv[i] = INF - (inv[INF % i] * (INF // i)) % INF
        finv[i] = finv[i - 1] * inv[i] % INF
    return fac, finv


def nCr(n, r):
    INF = int(1e9 + 7)
    if n < r or r < 0 or n < 0:
        return 0
    return fac[n] * (finv[r] * finv[n - r] % INF) % INF


N, K = list(map(int, input().split()))
MOD = 10**9 + 7
fac, finv = factorials(10**5)
for i in range(1, K + 1):
    # N-K+1このポケットにi個選ぶ
    l = nCr(N - K + 1, i)
    s = nCr(K - 1, i - 1)
    print(((l * s) % MOD))

def factorials(M):  # M!までのリストｘと其の逆元のリストyを返すmod INF
    INF = int(1e9 + 7)
    fac = [0] * (M + 1)
    finv = [0] * (M + 1)
    inv = [0] * (M + 1)
    fac[0] = fac[1] = 1
    finv[0] = finv[1] = 1
    inv[1] = 1
    for i in range(2, M + 1):
        fac[i] = (fac[i - 1] * i) % INF
        inv[i] = INF - (inv[INF % i] * (INF // i)) % INF
        finv[i] = finv[i - 1] * inv[i] % INF
    return fac, finv


def nCr(n, r):
    INF = int(1e9 + 7)
    if n < r or r < 0 or n < 0:
        return 0
    return fac[n] * (finv[r] * finv[n - r] % INF) % INF


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

-MOD = 10**9 + 7 -fac, finv = factorials(10**5) +fac, finv = factorials(N) -    # N-K+1このポケットにi個選ぶ -    l = nCr(N - K + 1, i) -    s = nCr(K - 1, i - 1) -    print(((l * s) % MOD)) +    a = nCr(N - K + 1, i) +    b = nCr(K - i + (i - 1), i - 1) +    print(((a * b) % (10**9 + 7)))