// Original C++ solution (slower):
/*ANKON GHOSH

  KUET,ECE 2K16*/

#include<bits/stdc++.h>

using namespace std;

#define ll long long

#define inf 1e18

#define MAX 2005

#define mod 1000000007

#define sf(a) scanf("%lld",&a)

#define sff(a,b) scanf("%lld %lld",&a,&b)

#define sfff(a,b,c) scanf("%lld %lld %lld",&a,&b,&c)

#define Case(i) printf("Case %lld:\n",i)

#define pf(a) printf("%lld\n",a)

#define pfsn printf("NO\n")

#define pfs  printf("YES\n")

#define pff(a,b) printf("%lld %lld\n",a,b)

#define FOR(i,n) for(ll i=0;i<n;i++)

#define FOR1(i,n) for(ll i=1;i<=n;i++)

#define LOOP(x,y) for(ll r=x;r<=y;r++)

#define RFOR(i,n) for(ll i=n-1;i>=0;i--)

#define RFOR1(i,n) for(ll i=n;i>0;i--)

#define RLOOP(x,y) for(ll i=y;i>=x;i--)

#define m_p(a,b) make_pair(a,b)

#define p_b(a) push_back(a)

#define ff first

#define ss second

#define fast ios_base::sync_with_stdio(false); cin.tie(NULL)

map<ll,ll>mp1,mp;

vector<pair<ll,pair<ll,ll> > >vpp,vpp1;

vector<ll>v,v1,v2,dummy;

map<pair<ll,ll>,ll>mpp;

map<pair<ll,ll>,bool>mb;

ll itr,n,k,a,b,c,d,ta,sum=0,cnt=0,m,l,req,sz,ok=0;

bool flag=0;

bool sortbysec(const pair<pair<ll,ll>,ll> &a,const pair<pair<ll,ll>,ll> &b)

{

    return (a.second < b.second);

}

vector<ll>adj[MAX+19];

bool visited[MAX+19];

ll start_time[MAX+10],finish_time[MAX+10],deep[MAX+10],parent[MAX+12];

ll dp[MAX];

void calc()

{

    memset(dp,0,sizeof dp);

    dp[0]=1;

    FOR1(i,MAX)

    {

        dp[i]=(dp[i-1]*i)%mod;

    }

}

ll mulmod(ll a , ll b , ll mo)

{

    ll q = ((long double) a * (long double) b / (long double) mo);

    ll res = a * b - mo * q;

    return ((res % mo) + mo) % mo;

}

ll bigmod (ll a, ll b, ll c)

{

    ll res = 1;

    a=a%c;

    while (b > 0)

    {

        if (b % 2 == 1)

        {

            res=mulmod(res,a,c);

        }

        a=mulmod(a,a,c);

        b=b/2;

    }

    return res;

}

ll m_inv(ll a, ll p)

{

    return bigmod (a,p-2,p);

}

int main()

{

    fast;

    calc();

    cin>>n>>k;

    ll blue=k;

    ll red=n-k;

    blue-=1;

    FOR1(i,k)

    {

        ll ok=1;

        ll ok1=1;

        ll denom=i-1;

        ll x=(dp[blue])%mod;

        ll y=(dp[denom]*dp[blue-denom])%mod;

        ll de=m_inv(y,mod)%mod;

        ll rem=(dp[red+1])%mod;

        if(red+1>=i){

        ll rem1=(dp[red+1-i]*dp[i])%mod;

        ll de1=(m_inv(rem1,mod))%mod;

        ok=(rem*de1)%mod;

        }

        else{

           ok=0;

        }

        ok1=(x*de)%mod;

        ///cout<<"b in r: "<<ok<<endl;

        ///cout<<"way: "<<ok1<<endl;

        cout<<(ok*ok1)%mod<<endl;

    }

    return 0;

}

 /*1 10 9 9

 6 9 9 9

 6 9 9 9

 8 9 9 9

 1 2 5 10 3 4 6 7 8 9

10 4 9 10 3 4 9 7 9 9*/


// Optimized solution to the same problem (faster):
#include <iostream>

#include <bits/stdc++.h>

#define p 1000000007

using namespace std;

int N,k;





const int A = 2e5 + 11;

const int B = 1e6 + 11;

const int inf = 0x3f3f3f3f;



inline int read() {

	char c = getchar(); int x = 0, f = 1;

	for( ; !isdigit(c); c = getchar()) if(c == '-') f = -1;

	for( ; isdigit(c); c = getchar()) x = x * 10 + (c ^ 48);

	return x * f;

}



int T, fac[A];



inline int power(long long a, long long  b) {

	long long res = 1;

	while (b) {

		if (b & 1) res = res * a % p;

		a = a * a % p, b >>= 1;

	}

	return res;

}



inline int C(int n, int m) {

	if (m > n) return 0;



	return (1LL*fac[n] * power(fac[m], p - 2) % p) *  power(fac[n - m], p - 2) % p;

}



inline int Lucas(int n, int m) {

	if (!m) return 1;

	//cout <<"CL:"<<C(n%p,m%p) << " "<<Lucas(n / p, m / p)<<endl;

	return C(n % p, m % p) * Lucas(n / p, m / p) % p;

}



inline void init() {

	int maxn = N*2;

	fac[0] = 1;

	for (int i = 1; i <= maxn; i++) fac[i] = (1LL*fac[i - 1] * i) % p;

}





int main()

{

    scanf("%d%d",&N,&k);

    long long b = k,r = N-k;

    init();



    for(int i=1;i<=k;++i)

    {

        long long i1 = 1,i2 = 1;

        if(r-i+1<0) {

            printf("0\n");continue;

        }

        i1 = Lucas(k-1,k-i);

        //cout << k << " "<<i<<" "<<i1 << endl;

        i2 = Lucas(r+1,r-i+1);

        //cout <<r+1<<" "<<r-i+1<<" "<<i2<<endl;

        printf("%lld\n",(1LL*i1*i2)%p);

    }

    return 0;

}


// Fastest known solution for this problem: