//interactive mt19937 engine(1); char z[401][401]{}; ll@n,m=n*(n-1)/2; vectorv(n); rep(i,n){ v[i]=i+1; } ll b=min(n,32); ll a=b>>1; rep(4500){ ll c=0; retry:; if(++c>100)break; shuffle(v.begin(),v.end(),engine); wtN("? ",a," ",b-a); rep(i,b){ wtN(" ",v[i]); } wt(""); rep(i,a){ rep(j,a,b){ if(!z[v[i]][v[j]]){ goto proceed; } } } goto retry; proceed:; ll@r; if(r<0){ exit(3); } if(!r){ rep(i,a){ rep(j,a,b){ if(!z[v[i]][v[j]]){ z[v[i]][v[j]]=1; z[v[j]][v[i]]=1; --m; } } } } } wt("!",m); rep(i,n){ rep(j,i+1,n){ if(!z[i][j]){ wt(i,j); } } }