
import qualified Data.Vector.Unboxed as U
import qualified Data.Vector as V
import qualified Data.ByteString.Char8 as C
import Data.List
import Control.Monad
import Data.Ord


r :: Int -> IO (U.Vector Int)
r n = U.unfoldrN n (C.readInt . C.dropWhile (==' ')) <$> C.getLine

r' :: IO [Int]
r'  =   unfoldr    (C.readInt . C.dropWhile (==' ')) <$> C.getLine

main :: IO ()
main = do
    [n,k] <- r'
    forM_ [1..k] (\i -> do
        print $ (binom (fromIntegral $ n-k+1) (fromIntegral i) * binom (fromIntegral $ k-1) (fromIntegral $ i-1)) `mod` divis
        --print $ ((n,k,i), n-k+1, (k-1, i-1))
        )


binom :: Integer -> Integer -> Integer
binom n 0 = 1
binom 0 k = 0
binom n k = ((binom (n-1) (k-1)) * n `div` k)

divis = 10^9 + 7
