program day2_2;
var
dis:array[0..50] of real;
mon:array[1..50] of real;
distotal,V,S,money:real;
n:integer;
procedure init;
var
i:integer;
begin
assign(input,'tour.in');
assign(output,'tour.out');
reset(input); rewrite(output);
read(distotal);
read(V,S,money,n);
for i:=1 to n do
read(dis[i],mon[i]);
inc(n);
dis[n]:=distotal;
mon[n]:=0;
end;
procedure main;
var
min,LV:real;
T,minpos,k:integer;
begin
T:=0; LV:=V;
while T<>n do begin
min:=maxlongint;
for k:=1 to n-T do
if dis[T+k]-dis[T]<=LV*S
then if mon[T+k]<min
then
begin
min:=mon[T+k];
minpos:=k
end;
if min=maxlongint
then
begin
money:=money+mon[T]*(V-LV)+20;
LV:=V
end
else
begin
LV:=LV-(dis[T+minpos]-dis[T])/S;
T:=T+minpos
end;
end;
end;
begin
init;
main;
writeln(money:0:1);
close(input); close(output);
end.