R=range O=print N=int(input())+1 a=[] def P(j): global l,r,a a+=[(i,j)];b[j]=0;l,r=[j for j in R(N)if b[j]],[] def D(B):return[B[d::2]for d in R(2)] for i in R(1,N): b=[j>i for j in R(N)];l,r=[j for j in R(N)if b[j]],[] while l: L=len(l);O("?",1,L,i,*l,flush=1) if input()=="1": if L^1:l,r=[l[d::2]for d in R(2)] else:P(l[0]) elif len(r)^1:l,r=[r[d::2]for d in R(2)] else:P(r[0]) O("!",len(a)) for e in a:O(*e)