# -*- coding: utf-8 -*- def idou(x,y,dx,dy): x2 = x + dx y2 = y + dy return x2,y2 def Kaiten(x,y,t): if t == 90: x2 = -y y2 = x return x2,y2 elif t == 180: x2 = -x y2 = -y return x2,y2 elif t == 270: x2 = y y2 = -x return x2,y2 elif t == 0: return x,y M = int(input()) P = [] for m in range(M): x,y = map(int,input().split()) P.append([x,y]) print("?",P[0][0],P[0][1],flush = True) x1,y1 = map(int,input().split()) if M == 1: print("!",flush =True) print(x1,y1,flush = True) elif M > 1: print("?",P[1][0],P[1][1],flush = True) x2,y2 = map(int,input().split()) arg = [P[0][0] - P[1][0],P[0][1] - P[1][1],x1 - x2, y1 - y2] if arg[0] == arg[2] and arg[1] == arg[3]: kaiten = 0 elif arg[0] == arg[3] and arg[1] == -arg[2]: kaiten = 90 elif arg[0] == -arg[3] and arg[1] == arg[2]: kaiten = 270 elif arg[0] == -arg[2] and arg[1] == -arg[3]: kaiten = 180 for i,p in enumerate(P): a,b = P[0][0],P[0][1] P[i][0],P[i][1] = idou(p[0],p[1],-a,-b) for i,p in enumerate(P): P[i][0],P[i][1] = Kaiten(p[0],p[1],kaiten) for i,p in enumerate(P): P[i][0],P[i][1] = idou(p[0],p[1],x1,y1) print("!",flush = True) for p in P: print(p[0],p[1],flush = True)