#include using namespace std; long double f(int x, long double Q, long double R, int remain, long double p) { long double a = (remain - x) * (Q - (1.0 - p) * R); // もみ消す long double b = Q * ((1.0 - pow(p, x)) / (1.0 - p)); // クビになる(ゼロ除算に注意) return a + b; } long double g(int x, long double Q, long double R, int remain, long double p) { long double a = -Q + (1 - p) * R; long double b = Q * pow(p, x); return a + b; } #pragma GCC optimize("O3") int main() { ios::sync_with_stdio(false); cin.tie(nullptr); auto solve = []() { int N, X, Y; cin >> N >> X >> Y; long double P, Q, R; cin >> P >> Q >> R; long double ans = -1.0; for (int t = 0; t <= N; t++) { int skill = X + t * Y; long double p = 1.0 - 1.0 / skill; int remain = N - t; if (skill == 1) { // 必ず卵をかけてしまう場合 if (remain == 1) { ans = max(ans, P * t + Q); } else { ans = max(ans, P * t + (Q - R) * (remain - 1) + Q); } continue; } int left = 0, right = remain; while (1 < right - left) { int mid = (left + right) / 2; if (g(mid, Q, R, remain, p) < 0) { right = mid; } else { left = mid; } } ans = max(ans, P * t + f(right, Q, R, remain, p)); } cout << fixed << setprecision(15) << ans << endl; }; int T; cin >> T; for (int i = 0; i < T; i++) { solve(); } }