← Home
#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;
}