fn read() -> String { let mut s = String::new(); std::io::stdin().read_line(&mut s).unwrap(); String::from(s.trim()) } fn main() { let u = 12.22f64 * 10f64.powi(74); let mut p = vec![]; let mut x = 0f64; while x < u { p.push(x); x = (x + 0.00001).max(x * 1.00001); } let t = read().parse::().unwrap(); for _ in 0..t { let mut l = 0; let mut r = p.len() - 1; for _ in 0..24 { if l >= r { break; } let m = (l + r) / 2; println!("? {}", p[m]); let ans = read(); if ans == "Yes" { l = m; } else { r = m; } } println!("! {}", (p[l] + p[r]) * 0.5); } }