const val P = 1000000007L

fun mod(x: Long) = if (x >= 0) x % P else (P - ((-x) % P)) % P
fun modPlus(x1: Long, x2: Long) = (x1 + x2) % P
fun modMinus(x1: Long, x2: Long) = (x1 + P - x2) % P
fun modTimes(x1: Long, x2: Long) = x1 * x2 % P

// Find (x, y, r) such that r = gcd(a,b) and ax + by = r.
fun extendedGCD(a: Long, b: Long): Triple<Long, Long, Long> {
    var x0 = 1L
    var y0 = 0L
    var z0 = a
    var x1 = 0L
    var y1 = 1L
    var z1 = b
    while (true) {
        if (z1 == 0L) return Triple(x0, y0, z0)
        val q = z0 / z1
        val x2 = x0 - q * x1
        val y2 = y0 - q * y1
        val z2 = z0 - q * z1
        x0 = x1
        x1 = x2
        y0 = y1
        y1 = y2
        z0 = z1
        z1 = z2
    }
}

fun modInv(x: Long): Long {
    val (x, y, r) = extendedGCD(x, P)
    if (r != 1L) return 0  // No inverse.

    return (x + P) % P
}

fun main(args: Array<String>) {
    val (n, k) = readLine()!!.split(" ").map { it.toInt() }
    val factorials = LongArray(2 * n + 1)
    factorials[0] = 1
    for (i in 1..(2 * n)) {
        factorials[i] = (i * factorials[i - 1]) % P
    }

    for (i in 1..k) {
        if (n - k < i - 1) {
            println(0)
        } else {
            val p1 = factorials[k - 1] * modInv(factorials[i - 1]) % P * modInv(factorials[k - i]) % P
            val p2 = factorials[n - k + 1] * modInv(factorials[i]) % P * modInv(factorials[n - k + 1 - i]) % P
            println(p1 * p2 % P)           
        }
    }
}