#include<bits/stdc++.h>
using namespace std;
double d1,c,d2,p;
int n;
int nowState=0;
double sum=0;
struct disPrice{
double distance,price;
};
disPrice a[11];
void findStation(){
for (int x=1;x<=n;x++){
if (nowState==d1) break;
int f=0;
int minindex=100;
double oil=0;
for (int i=2;i<=n;i++){
double minn=100;
if (i<=nowState) continue;
if (c*d2<a[i].distance-a[nowState].distance) break;
if (a[i].price<a[nowState].price){
sum+=((a[i].distance-a[nowState].distance)/d2-oil)*a[nowState].price;
f=1;
nowState=i;
}
else{
if (a[i].price<minn){
minn=a[i].price;
minindex=i;
}
}
f=0;
}
if (f==0){
sum+=c*a[nowState].price;
oil=c-(a[minindex].distance-a[nowState].distance)/d2;
nowState=minindex;
}
}
return;
}
bool cmp(disPrice a,disPrice b){
return a.distance<b.distance;
}
int main(){
cin>>d1>>c>>d2>>p>>n;
for (int i=1;i<=n;i++){
cin>>a[n].distance>>a[n].price;
}
a[0].distance=0;
a[0].price=p;
sort(a,a+n,cmp);
findStation();
printf("%.2lf",sum);
return 0;
}