import Control.Monad

repli :: [a] -> [a]
repli xs n = concatMap (replicate n) xs

repli' = flip $ concatMap . replicate

repli'' xs n = xs >>= replicate n

repli''' [] _ = []
repli''' (x:xs) n = foldr (const (x:)) (repli xs n) [1..n]