#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
double cos[15] = {}, dis[15] = {}, b[15] = {}, c, d, d2, ans = 1e9;
int n;
bool flag = false;
void dfs(int step, double cur, double mo)
{
if(step > n)
{
ans = min(ans, mo);
flag = true;
return;
}
if(c*d2 < b[step]) return;
double sum = 0;
for(int i = step; i <= n; i++)
{
sum += b[i];
if(c*d2 < sum) break;
dfs(i+1, c-sum/d2, mo + (c-cur)*cos[step]);
dfs(i+1, 0, mo + max<double>(0, cos[step]*sum/d2 - cos[step]*cur));
}
}
int main()
{
cin >> d >> c >> d2 >> cos[0] >> n;
for(int i = 1; i <= n; i++)
{
cin >> dis[i] >> cos[i];
}
sort(dis+1, dis+n+1);
for(int i = 1; i <= n; i++)
{
b[i-1] = dis[i] - dis[i-1];
}
b[n] = d-dis[n];
dfs(0, 0, 0);
if(flag == true) printf("%.2lf", ans);
else printf("No Solution");
return 0;
}