func main() var n: int :: cui@inputInt() var k: int :: cui@inputInt() var x: int :: cui@inputInt() var y: int :: cui@inputInt() var a: []int :: #[n + 1]int for i(1, n) do a[i] :: (cui@inputInt() - 1 + k - 1) / k end for do a.sort() do a.reverse() var numY: int :: a[0] var numX: int :: 0 var mp: int :: y * numY + x * numX var maxNumX: int :: (mp + x - 1) / x var ans: int :: mp for i(0, n - 1) var numDiff: int :: a[i] - a[i + 1] do numY :- numDiff do numX :+ numDiff * (i + 1) if(numX >= maxNumX) break i end if do mp :: y * numY + x * numX do ans :: lib@min(ans, mp) end for do cui@print("\{ans}\n") end func