fun main(args :Array<String>) {
    val MOD = 1000000007L
    val MAX = 3000
    val combination = Array<Array<Long>>(MAX) { Array<Long>(MAX) { 0 } }
    combination[0][0] = 1
    for (i in 1 until MAX) {
        for (j in 0..i) {
            val left = if (j - 1 >= 0) combination[i - 1][j - 1] else 0
            val right = combination[i - 1][j]
            combination[i][j] = (left + right) % MOD
        }
    }

    val (n, k) = readIntegerList()
    for (i in 1..k) {
        println((combination[n - k + 1][i] * combination[k - 1][i - 1]) % MOD)
    }
}

fun readInteger() = readLine()!!.toInt()
fun readStringList() = readLine()!!.split(" ")
fun readIntegerList() = readStringList().map(String::toInt)
fun readLongList() = readStringList().map(String::toLong)
