#include <iostream>
#include <cstdio>
using namespace std;
const int N=1e3+10;
double d1,c,d2,p;
int n;
double mon[N],juli[N],maxx;
int flag;
int findd(int x){
for(int i=x+1;i<=n;i++){
if(juli[x]+maxx<juli[i]){
return i-1;
}
if(mon[i]<mon[x]){
return i;
}
}
}
int main(){
cin>>d1>>c>>d2>>p>>n;
maxx=c*d2;
mon[0]=p;
juli[0]=0;
for(int i=1;i<=n;i++){
cin>>juli[i]>>mon[i];
if(juli[i-1]+maxx<juli[i]){
cout<<"No Solution";
return 0;
}
}
int now=0;
double now_ju=0;
double sum=0;;
while(true){
if((!juli[now+1]||juli[now+1]>=d1)&&juli[now]+maxx>=d1){
sum+=((d1-juli[now])/d2)*mon[now];
printf("%.2lf",sum);
return 0;
}
int k=findd(now);
double tem_ju=(juli[k]-juli[now])/d2;
sum+=mon[now]*tem_ju;
now=k;
now_ju=juli[k];
}
}