N, K = gets.split.map(&:to_i)
gaps = K - 1 # 青いボールの隙間の数
1.step(K, 1) do |i|
  if i == 1
    puts N - K + 1
  # elsif K == 2
  #   # TODO: 何らかの例外対応
  #   puts "hoge"
  else # K >= 3, i >= 2
    # 青グループの分割
    # 青いボールが全て並んでいるところに仕切りを入れて、青いボールをi個のグループに分けるイメージ。
    # 必要な仕切りの数は i - 1 個。
    # 青いボールは K 個あるので、その隙間は K - 1 個。
    # つまり K - 1 個から i - 1 個を選ぶ組み合わせ数。これを first とする。
    # p (1..(K - 1)).inject(:*)
    # p (1..(K - i)).inject(:*) || 1
    # p (1..(i - 1)).inject(:*)
    # p first = (1..(K - 1)).inject(:*) / ((1..(K - i)).inject(:*) || 1) / (1..(i - 1)).inject(:*)

    # 残りの赤の配分
    # これで赤いボールを入れられる箇所の数が決まった。すなわち仕切りの箇所と両端なので、i + 1 個ある。
    # 赤いボールは N - K 個あって、これらの隙間と両端合わせると N - K + 1個
    # ここに i + 1 - 1 = i 個の仕切りを入れるイメージ
    # p N - K + 1
    # p (1..(N - K + 1)).inject(:*)
    # p (1..(N - K + 1 - i)).inject(:*)
    # p (1..i).inject(:*)
    # p second = (1..(N - K + 1)).inject(:*) / (1..(N - K + 1 - i)).inject(:*) / (1..i).inject(:*)

    # p first * second % (10 ** 9 + 7)

    puts (1..(K - 1)).inject(:*) / ((1..(K - i)).inject(:*) || 1) / (1..(i - 1)).inject(:*) \
        * (1..(N - K + 1)).inject(:*) / ((1..(N - K + 1 - i)).inject(:*) || 1) / (1..i).inject(:*) \
        % (10 ** 9 + 7)
  end
end
