// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

#define ll long long

const ll mod=1e9+7;

const int maxn=2e5+10;

ll inv[maxn];

ll fac[maxn];

ll power(ll base,ll n)

{

    ll r=1;

    while(n)

    {

        if(n&1) r=r*base%mod;

        base=base*base%mod;

        n/=2;

    }

    return r;

}

void init()

{

    fac[0]=1;

    for(int i=1;i<=2e5;i++)

    {

        fac[i]=fac[i-1]*i%mod;

    }

    inv[200000]=power(fac[200000],mod-2);

    for(int i=2e5;i>=1;i--)

    {

        inv[i-1]=inv[i]*i%mod;

    }

}

ll C(ll m,ll n)

{

    return fac[n]*inv[m]%mod*inv[n-m]%mod;

}



int main()

{

    ios::sync_with_stdio(false);

    cin.tie(0);

    int n,k;

    cin>>n>>k;

    init();





    int red=n-k;

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

    {

        if(i>red+1)

        {

            cout<<0<<'\n';

            continue;

        }

        int ans=(C(i,red+1)*C(i-1,k-1))%mod;

        cout<<ans<<'\n';

    }





}


// Faster C++ solution for the same problem (measured speedup: 3.8286447660534124x):
/*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*/