#nullable enable void Q(int x) => Console.WriteLine("? " + x); bool I() => Console.ReadLine()!.Trim() == "1"; void F(int x) => Console.WriteLine("! " + x); var l = 0; var r = 1000000; Q(l); Q(r); var f = I(); if (f) (l, r) = (r, l); for (var i = 3; i <= 25; i++) { if (Math.Abs(l - r) <= 1) break; var mid = (l + r) >> 1; if (f) { Q(mid); f = I(); if (f) (l, r) = (mid, l); else r = mid; } else { var mm = (mid + l) >> 1; Q(mm); I(); if (i == 25) break; i++; Q(mid); f = I(); if (f) (l, r) = (mid, mm); else (l, r) = (mm, mid); } } F(l);