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

    val places = N-K +1
    (1..K).forEach { m ->
        val double = nCk(K - 1, m - 1, 1000000007)
        if (m > places) {
            println(0)
        } else {
            println((nCk(places, m, 1000000007) * double).mod(1000000007))
        }
    }
}

//return nCk mod M (M must be prime number) O(min(k,n-k)*logM)
fun nCk(n: Long, k: Long, M: Long): Long {
    var ret: Long = 1
    val min = Math.min(k, n - k)
    for (i in 1..min) {
        ret = ret * pow(i, M - 2, M) % M
    }
    for (i in n - min + 1..n) {
        ret = ret * i % M
    }
    return ret
}

fun pow(a: Long, b: Long, M: Long): Long {
    var b = b
    var ret: Long = 1
    var tmp = a
    while (b > 0) {
        if (b and 1 == 1L) ret = ret * tmp % M
        tmp = tmp * tmp % M
        b = b shr 1
    }
    return ret
}