def question(xl, xr, yl, yr): print("?", xl, xr, yl, yr) ans = int(input()) if ans == -1: exit() return int(input()) == 1 A = [] left = 0 while left <= 10**6 and question(left, 10**6, 0, 10**6): l = left r = 10**6 while l+1 < r: m = (l+r)//2 if not question(l, m, 0, 10**6): l = m+1 else: r = m if not question(l, l, 0, 10**6): l += 1 left2 = 0 while left2 <= 10**6 and question(l, l, left2, 10**6): l2 = left2 r2 = 10**6 while l2+1 < r2: m = (l2+r2)//2 if not question(l, l, l2, m): l2 = m+1 else: r2 = m if not question(l, l, l2, l2): l2 += 1 A.append((l, l2)) left2 = l2+1 print("!", len(A)) for X, Y in A: print(X, Y)