/*
* 龟兔赛跑:动态规划
* dp[i] = min(dp[i], dp[j] + temp)
*/
#include<stdio.h>
double time_Min(double a, double b); // 求两个数的最小值
int main()
{
int L; // 跑道长度
int N; // 充电站的个数
int C; // 电动车冲满电以后能行驶的距离
int T; // 每次充电所需要的时间
int VR; // 兔子跑步的速度
int VT1; // 乌龟开电动车的速度
int VT2; // 乌龟脚蹬电动车的速度
// 包含了N(N<=100)个整数p1,p2...pn,分别表示各个充电站离跑道起点的距离,
// 其中0 < p1 < p2 < ... < pn < L
int P[102];
// 保存结果的数组
double dp[102];
// 兔子跑完全程的时间
double time_r;
double temp; // 临时数据
int i, j; // 临时数据
int length; // 两个电站之间的距离
// 输入数据
while (scanf("%d", &L) != EOF)
{
scanf("%d%d%d", &N, &C, &T);
scanf("%d%d%d", &VR, &VT1, &VT2);
for (i = 1; i <= N; i++) // 为电站坐标赋值
{
scanf("%d", &P[i]);
}
P[0] = 0; // 起点
P[N+1] = L; // 终点
for (i = 1; i <= N+1; i++)
{
dp[i] = 999999.0;
for (j = 0; j < i; j++)
{
length = P[i] - P[j];
if (length <= C)
{
temp = length / VT1;
} else
{
temp = (C / VT1) + (length - C) / VT2;
}
if (j != 0) // 不是起点的话,就加上充电的时间
{
temp += T;
}
dp[i] = time_Min(dp[i], dp[j] + temp);
}
}
time_r = L / VR;
if (dp[N+1] < time_r) // 乌龟赢了
{
printf("What a pity rabbit!\n");
} else
{
printf("Good job,rabbit!\n");
}
}
return 0;
}
double time_Min(double a, double b)
{
return (a < b)?(a):(b);
}