#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using Int = long long; template ostream &operator<<(ostream &os, const pair &a) { return os << "(" << a.first << ", " << a.second << ")"; }; template void pv(T a, T b) { for (T i = a; i != b; ++i) cerr << *i << " "; cerr << endl; } template bool chmin(T &t, const T &f) { if (t > f) { t = f; return true; } return false; } template bool chmax(T &t, const T &f) { if (t < f) { t = f; return true; } return false; } using Double = long double; constexpr int N = 24; constexpr Double EPS = 1e-10L; constexpr Double L = 12.22e+74L; bool Ask(Double y) { printf("%.20Lf\n", y); fflush(stdout); char buf[10]; scanf("%s", buf); if (!strcmp(buf, "-1")) { assert(false); } return !strcmp(buf, "Yes"); } void Answer(Double x) { printf("%.20Lf\n", x); fflush(stdout); } Double get(Double t) { return (t < 0.0L) ? (1.0L + EPS * t) : exp(t * log1p(EPS)); } int main() { int numCases; for (; ~scanf("%d", &numCases); ) { Double lo = -1.0L / EPS, hi = log(L) / log1p(EPS); for (int i = 0; i < N; ++i) { const Double mid = (lo + hi) / 2.0L; const Double y = get(mid); (Ask(y) ? hi : lo) = mid; } const Double x = get((lo + hi) / 2.0L); Answer(x); } return 0; }