#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
double dis,con,disres,pristart;
double ans = 999999999,tot = 0;
int point = 0,n;
double d[8],p[8];
void dfs(int x,double y,double z){
if (z >= dis){
ans = min(tot,ans);
point = 1;
return;
}
if(tot >= ans) return;
for (int i = x + 1; i <= n + 1; ++i){
if (d[i] - z <= disres * y){
dfs(i,y - (d[i] - z) * disres,d[i]);
tot += (con - y) * p[x];
dfs(i,con - (d[i] - z) / disres,d[i]);
tot -= (con - y) * p[x];
}else{
if (disres * con + z >= d[i]){
tot += (con - y) * p[x];
dfs(i,con - (d[i] - z) / disres ,d[i]);
tot -= (con - y) * p[x];
double needweight = (d[i] - z) / disres;
tot += needweight * p[x];
dfs(i,y,d[i]);
tot -= needweight * p[x];
}
}
}
}
int main(){
scanf("%lf%lf%lf%lf%d",&dis,&con,&disres,&pristart,&n);
for (int i = 1;i <= n; ++i)
scanf("%lf%lf",&d[i],&p[i]);
d[0] = 0; p[0] = pristart;
d[n + 1] = dis; p[n + 1] = 999999999;
dfs(0,0,0);
if (!point) printf("No Solution");
else printf("%.2f",ans);
}