#include<bits/stdc++.h>
using namespace std;
int t,n,x,y;
vector<int> tmp,lp,rp,lq,rq;
int solve(int l,int r,vector<int> p,vector<int> q){
if(p.size()==1) return p[0];
int mid=(l+r)>>1;
lp.clear(),rp.clear(),lq.clear(),rq.clear();
for(int i:p){
printf("? %d %d ",i,mid-l+1);
for(int j=l;j<=mid;j++) printf("%d ",j);
printf("\n? %d %d ",i,r-mid);
for(int j=mid+1;j<=r;j++) printf("%d ",j);
printf("\n"),fflush(stdout),scanf("%d%d",&x,&y);
if(x&&y) lq.emplace_back(i),rq.emplace_back(i);
else (x?lp:rp).emplace_back(i);
}
for(int i:q){
printf("? %d %d ",i,mid-l+1);
for(int j=l;j<=mid;j++) printf("%d ",j);
printf("\n"),fflush(stdout),scanf("%d",&x);
(x?lq:rq).emplace_back(i);
}
return (int)(lp.size()*2+lq.size())!=mid-l+1?solve(l,mid,lp,lq):solve(mid+1,r,rp,rq);
}
int main(){
cin>>t;
while(t--){
scanf("%d",&n),tmp.resize(n);
for(int i=1;i<=n;i++) tmp[i-1]=i;
printf("! %d\n",solve(1,2*n-1,tmp,{})),fflush(stdout);
}
return 0;
}