fun longList() = readLine()?.split(" ")?.map(String::toLong) ?: TODO()
fun main() {
    val (n, k) = longList()
    val r = n - k
    val m = (1e9 + 7).toLong()
    buildString {
        repeat(k.toInt()) {
            val t = (mnCr(r + 1, it + 1L, m) * mnCr(k - 1, it.toLong(), m)) % m
            appendln(t)
        }
    }.let {
        println(it.trimIndent())
    }
}

fun mnCr(n: Long, r: Long, m: Long): Long {
    val nc = (n - r + 1).until(n + 1).fold(1L) { a, b ->
        (a * (b)) % m
    }
    val rc = 0.until(r).fold(1L) { a, b ->
        (a * (r - b)) % m
    }
    return (nc * mPow(rc, m - 2, m)) % m
}

fun mPow(n: Long, ex: Long, m: Long): Long {
    var x = n
    var remain = ex
    var result = 1L
    while (remain > 0) {
        if (remain % 2L == 1L) {
            result = (result * x) % m
        }
        x = (x * x) % m
        remain /= 2
    }
    return result
}
