import sys input = sys.stdin.readline n=int(input()) E=[set() for i in range(n+1)] ind=1 while ind<=n: ALL=set(range(1,n+1)) ALL.remove(ind) for x in E[ind]: ALL.discard(x) L=list(ALL) if len(ALL)==0: ind+=1 continue print("?",1,len(ALL),ind,*ALL,flush=True) ret=int(input()) if ret==0: ind+=1 elif ret==-1: break else: while len(ALL)>1: L=list(ALL) X=L[:len(L)//2] Y=L[len(L)//2:] print("?",1,len(X),ind,*X,flush=True) ret=int(input()) if ret==0: ALL=Y elif ret==1: ALL=X else: break xx=list(ALL)[0] E[ind].add(xx) E[xx].add(ind) ANS=[] for i in range(1,n+1): for x in E[i]: if x>i: ANS.append((i,x)) print("!",len(ANS),flush=True) for a,b in ANS: print(a,b,flush=True)