Xs = list() ans = list() MX = 1000000 def ask(xl, xr, yl, yr): print('?', xl, xr, yl, yr) ret = int(input()) assert(ret == 0 or ret == 1) return ret def findx(l, r): global Xs if l + 1 == r: Xs.append(l) return m = (l + r)//2 if ask(l, m - 1, 0, MX): findx(l, m) if ask(m, r - 1, 0, MX): findx(m, r) return def findy(l, r, x): global ans if l + 1 == r: ans.append((x, l)) return m = (l + r)//2 if ask(x, x, l, m - 1): findy(l, m, x) if ask(x, x, m, r - 1): findy(m, r, x) return def main(): findx(0, MX + 1) for x in Xs: findy(0, MX + 1, x) N = len(ans) print('!', N) for x, y in ans: print(x, y) if __name__ == '__main__': main()