var
wet: array[1..500000] of longint;
n, a, b, i, ans: longint;
procedure adj(head, tail: longint);
var
i, j, x: longint;
begin
i:= head; j:= i shl 1; x:= wet[i];
while j <= tail do
begin
if (j < tail) and (wet[j] < wet[j + 1]) then
inc(j);
if x < wet[j] then
begin
wet[i]:= wet[j]; i:= j; j:= i shl 1;
end else j:= tail + 1;
end;
wet[i]:= x;
end;
begin
assign(input, 'dry.in'); reset(input);
assign(output, 'dry.out'); rewrite(output);
read(n, a, b);
for i:=1 to n do read(wet[i]);
for i:= n div 2 downto 1 do adj(i, n);
ans:= 0;
while wet[1] > 0 do
begin
dec(wet[1], b);
for i:=1 to n do dec(wet[i], a);
adj(1, n); inc(ans);
end;
write(ans);
close(input); close(output);
end.