#include <iostream> //basic dp problem
#include <iomanip>
using namespace std;
int main()
{
int n;
while(cin>>n&&n)
{
double times[10007]; //time cost after x driving distance
double dp[107]; // dp[i-1] stand for the shortest time cost arriving checkpoint i
double b,v,e,f;
int r,a[107];
for(int i=0;i<n;i++)
cin>>a[i];
cin>>b>>r>>v>>e>>f;
times[0]=0;
for(int i=0;i<a[n-1];i++)
{
if(i<r) times[i+1]=times[i]+1/(v-f*(r-i));
else times[i+1]=times[i]+1/(v-e*(i-r));
} //initial time expense
for(int i=0;i<n;i++)
{
dp[i]=times[a[i]];
for(int j=0;j<i;j++)
dp[i]=min(dp[i],dp[j]+times[a[i]-a[j]]+b);
}
cout<<fixed<<setprecision(4)<<dp[n-1]<<endl;
}
return 0;
}