fun main(args: Array<String>) {
    val (n,k) = readLine()!!.split(" ").map { it.toLong() }

    (1..k).joinToString("\n") { i ->
        val ans = combination(k-1, i-1) x combination(n-k+1, i)
        ans.toString()
    }.let { println(it) }
}



const val MOD = 1000000007L
const val FACT_MAX = 10000

infix fun Long.x(other: Long) = (this*other)%MOD
infix fun Long.t(other: Long) = (this+other)%MOD

val fact = run {
    val fact = LongArray(FACT_MAX+1)
    fact[0] = 1L
    for (i in 1..FACT_MAX) fact[i] = fact[i-1] x i.toLong()
    fact.toList()
}

fun pow(base: Long, exp: Long): Long{
    var base = base
    var exp = exp
    var ret = 1L
    while (exp>0) {
        if(exp%2==1L) ret = ret x base
        base = base x base
        exp /= 2
    }
    return ret
}

fun inv(n: Long) = pow(n, MOD-2)

fun combination(n: Long, k: Long) : Long{
    if(n<k) return 0L
    val n = n.toInt()
    val k = k.toInt()
    val denominator = fact[k] x fact[n-k]
    return fact[n] x pow(denominator, MOD-2)
}
