#include<bits/stdc++.h>
using namespace std;
double d1,c,d2,p;
int n;
struct distprice{
double dist;
double price;
};
distprice a[505];
double sum=0;
void trevel(int x){
if (x==n) return;
if (c*d2<a[x+1].dist-a[x].dist){
cout<<"No Solution";
return;
}
for (int i=x+1;i<=n && a[i].dist-a[x].dist<=c*d2;i++){
if (a[i].price<a[x].price){
sum+=a[x].price*((a[i].dist-a[x].dist)/d2);
return trevel(i);
}
}
if (d1-a[x].dist<=c*d2){
sum+=a[x].price*((d1-a[x].dist)/d2);
return;
}
else{
int minn=505;
for (int i=x+1;i<=n && a[i].dist-a[x].dist<=c*d2;i++){
if (a[i].price<a[minn].price){
minn=i;
}
}
sum+=a[x].price*((a[minn].dist-a[x].dist)/d2);
return trevel(minn);
}
}
bool cmp(distprice a,distprice b){
return a.dist<b.dist;
}
int main(){
a[0].dist=0;
a[0].price=p;
a[505].price=505;
cin>>d1>>c>>d2>>p>>n;
for (int i=1;i<=n;i++){
cin>>a[i].dist>>a[i].price;
}
sort(a+1,a+1+n,cmp);
trevel(0);
cout<<sum;
return 0;
}