def exist(xl, xr, yl, yr): print('?', xl, xr, yl, yr) ans = int(input()) if ans == 1: return True elif ans == 0: return False else: exit() def solve(): presents = [] def _solve(xl, xr, yl, yr): if not exist(xl, xr, yl, yr): return if xl == xr: if yl == yr: presents.append((xl, yl)) else: mid = (yl + yr) // 2 _solve(xl, xr, yl, mid) _solve(xl, xr, mid+1, yr) else: mid = (xl + xr) // 2 _solve(xl, mid, yl, yr) _solve(mid+1, xr, yl, yr) _solve(0, 1000000, 0, 1000000) print('!', len(presents)) for x, y in presents: print(x, y) solve()