import sys import math import itertools import bisect from copy import copy from collections import deque,Counter from decimal import Decimal def s(): return input() def i(): return int(input()) def S(): return input().split() def I(): return map(int,input().split()) def L(): return list(input().split()) def l(): return list(map(int,input().split())) def lcm(a,b): return a*b//math.gcd(a,b) sys.setrecursionlimit(10 ** 9) mod = 10**9+7 N,K,X,Y = I() A = l() A.sort(reverse=True) A = [math.ceil((A[i]-1)/K) for i in range(N)] B = math.ceil(X/Y) if X > Y: print(max(A)) exit() if X*N < Y: B = N+1 C = A[0:B] if A[B:]: D = max(A[B:]) else: D = 0 ans = 0 for c in C: ans += X*(c-D) ans += D*Y print(ans)