#include<iostream>
#include<cmath>
using namespace std;
double d1, c, d2, p, now, ans, m = 1000000;
int n;
bool flag = false;
struct node {
double money, far;
}station[10];
int main() {
scanf("%lf%lf%lf%lf%d", &d1, &c, &d2, &p, &n);
station[0].far = 0;
station[0].money = p;
for(int i = 1 ; i <= n ; i ++) {
scanf("%lf%lf", &station[i].far, &station[i].money);
}
for(int i = 0 ; i <= n ; i ++) {
if(c * d2 < station[i].far) {
printf("No Solution");
return 0;
} else if(i != 0) {
if(now >= (station[i].far - station[i - 1].far) / d2) {
continue;
}
} else {
for(int j = i + 1 ; j <= n ; j ++) {
m = min(m, station[j].money);
if(station[j].money < station[i].money) {
ans += ((station[j].far - station[i].far) / d2 - now) * station[i].money;
now = (station[j].far - station[i].far) / d2;
flag = true;
break;
}
}
if(flag) {
flag = false;
m = 1000000;
} else {
ans += ((m - station[i].far) / d2 - now) * station[i].money;
now = (m - station[i].far) / d2;
m = 1000000;
}
}
}
printf("%.2lf", ans);
return 0;
}