using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[][] NArr(long n) => Enumerable.Repeat(0, (int)n).Select(_ => NList).ToArray(); public static void Main() { Solve(); } static void Solve() { var c = NList; var (t, sx, sy, tx, ty) = (c[0], c[1], c[2], c[3], c[4]); var min = 0; var max = t; while (max - min > 1) { var mid = (min + max) / 2; WriteLine($"? {mid}"); c = NList; var slen = Len(sx, sy, c[0], c[1]); var tlen = Len(tx, ty, c[0], c[1]); if (slen == tlen) { WriteLine($"! {mid}"); return; } if (slen < tlen) min = mid; else max = mid; } WriteLine($"! {min}"); } static int Len(int ax, int ay, int bx, int by) { return Math.Abs(ax - bx) + Math.Abs(ay - by); } }