N = int(input())
A, B = map(int, input().split())
C = int(input())
D = []
for _ in range(N):
D.append(int(input()))
D.sort(reverse=True)
current_price = A
current_calories = C
max_calories = C / A
for toping_calories in D:
temp_calories = current_calories + toping_calories
temp_price = current_price + B
if temp_calories / temp_price > max_calories:
max_calories = temp_calories / temp_price
current_calories=temp_calories
current_price=temp_price
else:
break
print(int(max_calories))
# 3
# 12 2
# 200
# 50
# 300
# 100
이건 뭐... 그냥 너무 쉬운 문제라..
우선 토핑들의 칼로리를 내림차순으로 정렬한후,
도우의 1원당 칼로리와 지불해야할 금액을 저장해놓고
토핑들의 칼로리를 순회하면서
저장된 금액에 토핑 가격 추가, 저장된 칼로리에 토핑 칼로리를 추가한 후,
1원 당 칼로리를 계산하여 이전에 계산해놨던 1원당 칼로리보다 높으면 최대 칼로리를 변경한다.
만약 이전에 계산했던 1원당 칼로리보다 낮다면 토핑의 칼로리를 내림차순으로 정렬했고 모든 토핑의 가격은 동일하기 때문에
이후 토핑들은 더이상 볼 필요가 없다.