#!/usr/bin/env python3 import collections Point = collections.namedtuple("Point", "x y") def printf(*args, **kwargs): kwargs["flush"] = True print(*args, **kwargs) def ask(p): printf("? {} {}".format(p.x, p.y)) return Point(*(int(z) for z in input().split())) def answer(ps): printf("!") printf(*("{} {}".format(p.x, p.y) for p in ps), sep="\n") def main(): m = int(input()) ps = [Point(*(int(z) for z in input().split())) for _ in range(m)] x_1, _ = ask(Point(0, 0)) x_2, y_2 = ask(Point(0, 1)) c = -x_1 + y_2 s = x_1 - x_2 d = x_1 qs = (Point(c * p.x - s * p.y - d, s * p.x + c * p.y + d) for p in ps) answer(qs) if __name__ == '__main__': main()