O,R=print,range I=lambda:int(input()) N=I() if N<2:O("! 1 1"),exit() P=[1]*(N+1) for i in R(2,N): if P[i]: for j in R(i+i,N+1,i):P[j]=0 for i in R(N,0,-1): if P[i]: P=i break Q=[] L=0 N=R(1,N+1) for i in N: O("?",i,i) t=I() if t%P<1:Q,L=Q+[i],L+1 if L<2:Q+=[Q[0]] else: O("?",*Q) t=I() if t%P:Q=Q[::-1] A=[] for n in R(2): A+=[[]] for i in N: if i==Q[n]:A[n]+=[P] else: O("?",[i,Q[0]][n],[Q[1],i][n]) A[n]+=[I()//P] O("!",*A[0],*A[1])