import Data.Ratio as R main :: IO () main = do [_n, k, x, y] <- map read . words <$> getLine a <- map read . words <$> getLine print $ solve k (x, y) a solve :: Int -> (Int, Int) -> [Int] -> Int solve k (x, y) a = solve' a' where a' = filter (> 0) $ map (\i -> ceiling $ (i - 1) R.% k) a solve' :: [Int] -> Int solve' [] = 0 solve' a'' | x * length a'' <= y = sum a'' * x | otherwise = y * m + solve' a''' where m = minimum a'' a''' = filter (> 0) $ map (\i -> i - m) a''