#!/usr/bin/env runhaskell import Data.Array.ST import Data.Array.Unboxed import Control.Monad import Control.Arrow count :: [Int] -> Int -> UArray Int Int count l m = runSTUArray $ do a <- newArray (0 , m) 0 mapM_ (flip (modifyArray a) (+ 1)) l pure a main :: IO () main = do (m : l) <- map read . lines <$> getContents let c = count (drop 1 l) m forM_ (indices c) (uncurry replicateM . ((c !) &&& print))