#include<cstdio>
#include<algorithm>
using namespace std;
typedef double d;
struct jjyz
{
double p,d;
};
jjyz jyz[1001];
d d1,c,d2;
int n;
d ans;
bool cmp(jjyz &a,jjyz &b);
void dn(int zd,int y,double q);
int main()
{
int i,j;
scanf("%lf%lf%lf%lf%d",&d1,&c,&d2,&jyz[1].p,&n);
jyz[1].d = 0;
for(i=2;i<=n+1;i++)
{
scanf("%lf%lf",&jyz[i].d,&jyz[i].p);
}
jyz[n+2].d = d1;
jyz[n+2].p=0;
sort(jyz+1,jyz+n+2,cmp);
dn(1,0,0);
if(ans>=0.000001)
printf("%.2lf",ans);
}
bool cmp(jjyz &a,jjyz &b)
{
return a.d<b.d;
}
void dn(int zd,int y,double q)
{
if(zd==n+2)
{
ans=q;
return;
}
if(c*d2<jyz[zd+1].d-jyz[zd].d)
{
printf("No Solution\n");
return;
}
int i,j;
for(i=zd+1;i<=n+2;i++)
{
if(c*d2>jyz[i].d-jyz[zd].d)
{
if(jyz[i].p<jyz[zd].p)
{
dn(i,0,q+jyz[zd].p*((jyz[i].d-jyz[zd].d)/d2));
return;
}
}
}
double mn=10000000.0;
int wz=0;
for(i=zd+1;i<=n+2;i++)
{
if(c*d2>jyz[i].d-jyz[zd].d)
{
if(mn>jyz[i].p)
{
mn=min(mn,jyz[i].p);
wz=i;
}
}
}
dn(wz,0,q+jyz[zd].p*((jyz[wz].d-jyz[zd].d)/d2));
return;
}