class Interactive def solve_exp if query(1) return -1 end ok = 76 ng = -1 while (ok - ng).abs > 1 mid = (ok + ng) / 2 if query(10 ** mid) ok = mid else ng = mid end end ok end def solve exp = solve_exp ok = 1.0 ng = 0 while (ok - ng).abs > 0.00001 mid = (ok + ng) / 2 if query(mid * (10 ** exp)) ok = mid else ng = mid end end ok * (10 ** exp) end def query(v) send_query(v) read end def send_query(v) @sent_query = v $stdout.puts "? %.10f" % v $stdout.flush end def read case $stdin.gets.chomp when /y/i true when /n/i false else raise end end end gets.to_i.times do ans = Interactive.new.solve $stdout.puts "! %.10f" % ans $stdout.flush end