N, K, X, Y = map(int, input().split()) A = list(map(int, input().split())) B = list(map(lambda x: ((x - 1) + (K - 1))//K, A)) maxB = max(B) if X > Y: exit(print(maxB)) # 三分探索 def f(x): # ベホマラーをx回使うときの全体コスト cnt = 0 for b in B: if b > x: cnt += b - x return x*Y + cnt*X left = 0 right = maxB while right - left > 5: m1 = (left * 2 + right)//3 m2 = (left + right * 2)//3 if f(m1) > f(m2): # left ~ m1 間には存在しない left = m1 else: right = m2 ans = 1e18 for i in range(left, right + 1): ans = min(ans, f(i)) print(ans)