mod=10**9+7

 

def framod(n, a=1):

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

    a=a * i % mod

  return a

  

def power(n, r):

  if r == 0: return 1

  if r%2 == 0:

    return power(n*n % mod, r//2) % mod

  if r%2 == 1:

    return n * power(n, r-1) % mod

  

def comb(n, k):

  a=framod(n)

  b=framod(k)

  c=framod(n-k)

  return (a * power(b, mod-2) * power(c, mod-2)) % mod

  

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

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

  if N-K+1>=i and K-1>=i-1:

    print(((comb(N-K+1, i)*comb(K-1, i-1))%mod))

  else:

    print((0))
def comb(n, r):

    if r<0 or r>n:

        return 0

    r=min(r, n-r)

    return g1[n]*g2[r]*g2[n-r]%MOD



MOD=10**9+7

MAXN=4000+10

g1=[1, 1]

g2=[1, 1]

inverse=[0, 1]



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

    g1.append((g1[-1]*i)%MOD)

    inverse.append(-inverse[MOD%i]*(MOD//i)%MOD)

    g2.append((g2[-1]*inverse[-1])%MOD)



def f(n, k):

    if n<k:

        return 0

    if n==0 and k==0:

        return 1

    if k<1:

        return 0

    return f2(n-k, k)



def f2(n, k):

    return comb(n+k-1, k-1)



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

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

    b=f(K, i)

    r=f(N-K, i-1)+2*f(N-K, i)+f(N-K, i+1)

    print(((b*r)%MOD))
mod = 10**9 + 7


def framod(n, a=1):
    for i in range(1, n + 1):
        a = a * i % mod
    return a


def power(n, r):
    if r == 0:
        return 1
    if r % 2 == 0:
        return power(n * n % mod, r // 2) % mod
    if r % 2 == 1:
        return n * power(n, r - 1) % mod


def comb(n, k):
    a = framod(n)
    b = framod(k)
    c = framod(n - k)
    return (a * power(b, mod - 2) * power(c, mod - 2)) % mod


N, K = list(map(int, input().split()))
for i in range(1, K + 1):
    if N - K + 1 >= i and K - 1 >= i - 1:
        print(((comb(N - K + 1, i) * comb(K - 1, i - 1)) % mod))
    else:
        print((0))

def comb(n, r):
    if r < 0 or r > n:
        return 0
    r = min(r, n - r)
    return g1[n] * g2[r] * g2[n - r] % MOD


MOD = 10**9 + 7
MAXN = 4000 + 10
g1 = [1, 1]
g2 = [1, 1]
inverse = [0, 1]
for i in range(2, MAXN + 1):
    g1.append((g1[-1] * i) % MOD)
    inverse.append(-inverse[MOD % i] * (MOD // i) % MOD)
    g2.append((g2[-1] * inverse[-1]) % MOD)


def f(n, k):
    if n < k:
        return 0
    if n == 0 and k == 0:
        return 1
    if k < 1:
        return 0
    return f2(n - k, k)


def f2(n, k):
    return comb(n + k - 1, k - 1)


N, K = list(map(int, input().split()))
for i in range(1, K + 1):
    b = f(K, i)
    r = f(N - K, i - 1) + 2 * f(N - K, i) + f(N - K, i + 1)
    print(((b * r) % MOD))

-mod = 10**9 + 7 +def comb(n, r): +    if r < 0 or r > n: +        return 0 +    r = min(r, n - r) +    return g1[n] * g2[r] * g2[n - r] % MOD -def framod(n, a=1): -    for i in range(1, n + 1): -        a = a * i % mod -    return a +MOD = 10**9 + 7 +MAXN = 4000 + 10 +g1 = [1, 1] +g2 = [1, 1] +inverse = [0, 1] +for i in range(2, MAXN + 1): +    g1.append((g1[-1] * i) % MOD) +    inverse.append(-inverse[MOD % i] * (MOD // i) % MOD) +    g2.append((g2[-1] * inverse[-1]) % MOD) -def power(n, r): -    if r == 0: +def f(n, k): +    if n < k: +        return 0 +    if n == 0 and k == 0: -    if r % 2 == 0: -        return power(n * n % mod, r // 2) % mod -    if r % 2 == 1: -        return n * power(n, r - 1) % mod +    if k < 1: +        return 0 +    return f2(n - k, k) -def comb(n, k): -    a = framod(n) -    b = framod(k) -    c = framod(n - k) -    return (a * power(b, mod - 2) * power(c, mod - 2)) % mod +def f2(n, k): +    return comb(n + k - 1, k - 1) -    if N - K + 1 >= i and K - 1 >= i - 1: -        print(((comb(N - K + 1, i) * comb(K - 1, i - 1)) % mod)) -    else: -        print((0)) +    b = f(K, i) +    r = f(N - K, i - 1) + 2 * f(N - K, i) + f(N - K, i + 1) +    print(((b * r) % MOD))