// This code wrote by chtholly_micromaker(MicroMaker)
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
#include <bits/stdc++.h>
#define reg register
#define int long long
using namespace std;
const int MaxN=10000050;
const int p=1e9+7;
template <class t> inline void read(t &s)
{
	s=0;
	reg int f=1;
	reg char c=getchar();
	while(!isdigit(c))
	{
		if(c=='-')
			f=-1;
		c=getchar();
	}
	while(isdigit(c))
		s=(s<<3)+(s<<1)+(c^48),c=getchar();
	s*=f;
	return;
}
int f[MaxN],inv[MaxN];
inline int fastpow(int a,int b)
{
	reg int ans=1;
	for(;b;b>>=1,a=a*a%p)
		if(b&1)
			ans=ans*a%p;
	return ans;
}
inline int C(int n,int m)
{
	if(n<m)
		return 0;
	return f[n]*inv[m]%p*inv[n-m]%p;
}
inline void write(int x)
{
	reg int sta[15];
	reg int top=0;
	do
	{
		sta[top++]=x%10,x/=10;
	}while(x);
 	while(top)
		putchar(sta[--top]+48);
	putchar('\n');
	return;
}
signed main(void)
{
	// freopen("t2.out","w",stdout);
	int n,k;cin>>n>>k;
	f[0]=1;
	for(int i=1;i<=n;++i)
		f[i]=f[i-1]*i%p;
	for(int i=0;i<=n;++i)
		inv[i]=fastpow(f[i],p-2);
	// for(int i=1;i<=k;++i)
	// {
		// reg int t=(((2*C(n-k-1,i-1)%p)+C(n-k-1,i)%p)+C(n-k-1,i-2))%p;
		// write(C(k-1,i-1)*t%p);
	// }
	// for(int i=1;i<=k;++i)
// printf("%lld\n",C(k-1,i-1)*((((2*C(n-k-1,i-1)%p)+C(n-k-1,i)%p)+C(n-k-1,i-2))%p)%p);
	for(int i=1;i<=k;++i)
		write(C(k-1,i-1)*C(n-k+1,i)%p);
	return 0;
}

// ANS= C[k-1][i-1]*(2*C[n-k-1][i-1]+C[n-k-1][i]+C[n-k-1][i-2])

// 10000000 10000000

Measured memory_bytes: 2304