STDOUT.sync = true H, W = gets.split.map(&:to_i) if H == 1 and W == 1 puts "! 1 1" exit end i1, j1 = 1, 1 puts "? #{i1} #{j1}" d1 = gets.to_i if H == 1 or W == 1 (1 .. H).each do |i| (1 .. W).each do |j| if d1 == (i - i1)**2 + (j - j1)**2 puts "! #{i} #{j}" exit end end end end if d1 == 0 puts "! #{i1} #{j1}" exit end if d1 == (H - i1)**2 + (W - j1)**2 puts "! #{H} #{W}" exit end i2, j2 = H, 1 puts "? #{i2} #{j2}" d2 = gets.to_i (1 .. H).each do |i| (1 .. W).each do |j| if d1 == (i - i1)**2 + (j - j1)**2 and d2 == (i - i2)**2 + (j - j2)**2 puts "! #{i} #{j}" exit end end end