#include <bits/stdc++.h>
using namespace std;
double dist,p[10],d[10],v1,c,t,ans,r[10];
int n,now;
int min(){
double minn=100000000000; int j;
for(int i=0;i<now;i++)if(r[i]!=0 && minn>p[i])minn=p[i],j=i;
return j;
}
int main(){
scanf("%lf%lf%lf%lf%d",&dist,&c,&t,&p[0],&n);
r[0]=c;
for(int i=1;i<=n;i++){scanf("%lf%lf",&d[i],&p[i]); r[i]=c;}
for(int i=1;i<=n;i++){
if(c*t*i<d[i]){puts("No Solution"); return 0;}
double need=(d[i]-d[i-1])/t; now=i;
for(int j=0;j<i;j++){
if(need==0)break;
int minn=min();
if(r[minn]>=need){
r[minn]-=need;
ans+=p[minn]*need;
need=0;
}
else {
need-=r[minn];
ans+=r[minn]*p[minn];
r[minn]=0;
}
}
}
if(c*t*(n+1)<dist){puts("No Solution"); return 0;}
dist=dist-d[n];
double need=dist/t; now=n+1;
for(int j=0;j<=n;j++){
if(need==0)break;
int minn=min();
if(r[minn]>=need){
r[minn]-=need;
ans+=p[minn]*need;
need=0;
}
else {
need-=r[minn];
ans+=r[minn]*p[minn];
r[minn]=0;
}
}
printf("%.2f\n",ans);
return 0;
}