#include #include #include #include using namespace std; const bool debug=false; vectorans; int Qc; int N; bool ask(vectorB) { if(N>s; return s=="Yes"; } vectorsolve(int N) { vectorB; for(int a=1;a<=N;a++) { for(int cnt=0;;cnt++) { int f=0; if(cnt>0) { while(B[f++]!=a); //f=B.size(); //while(B[f-1]!=a)f--; } { vectorC(B.begin(),B.begin()+f); C.push_back(a); if(!ask(C))break; } int L=f,R=B.size()+1; while(R-L>1) { int mid=(L+R)/2; vectorC(B.begin(),B.begin()+mid); C.push_back(a); if(ask(C))L=mid; else R=mid; } B.insert(B.begin()+L,a); } } return B; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); mt19937 rng; while(debug) { N=rng()%10+1; ans.resize(N); for(int i=0;i>N; auto A=solve(N); cout<<"!"; for(int a:A)cout<<" "<