#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=10;
struct node{
double d,p;
}a[N];
double c,v,ans,sum,x,t;
int n,p1=0,p2;
bool f=0;
bool cmp(node x,node y)
{
return x.d<y.d;
}
signed main()
{
cin>>x>>c>>v>>a[0].p>>n;
a[0].d=0;
a[n+1].d=x;
a[n+1].p=0;
for(int i=1;i<=n;i++)
{
cin>>a[i].d>>a[i].p;
}
sort(a+0,a+n+2,cmp);
sum=c*v;
for(int i=1;i<=n+1;i++)
{
if(a[i].d-a[i-1].d>sum)
{
cout<<"No Solution";
return 0;
}
}
while(1)
{
f=0;
if(p1==n+1)
{
cout<<fixed<<setprecision(2)<<ans;
return 0;
}
for(int i=p1+1;i<=n+1;i++)
{
if(a[i].p<=a[p1].p && c*v>=(a[i].d-a[p1].d))
{
ans+=((a[i].d-a[p1].d)/v-t)*a[p1].p;
t=0;
p1=i;
f=1;
break;
}
}
if(!f)
{
sum=c*v;
x=a[p1+1].p;
p2=p1+1;
for(int i=p1+2;i<=n+1;i++)
{
if(sum>=a[i].d-a[p1].d && a[i].p<x)
{
p2=i;
x=a[p2].p;
}
}
ans+=(c-t)*a[p1].p;
t=c-(a[p2].d-a[p1].d)/v;
p1=p2;
}
if(!f)
{
cout<<"No Solution";
return 0;
}
if(p1==n+1)
{
cout<<fixed<<setprecision(2)<<ans;
return 0;
}
}
return 0;
}