#include<bits/stdc++.h>
using namespace std;
int n,c,vals[155],a[155],ans[155];
int ask(vector<int>v,int i=-1){
    if(i!=-1) v.push_back(i);
    cout<<v.size()<<' ';
    for(int i:v) cout<<i<<' ';
    cout<<endl;
    int _;
    cin>>_;
    return _;
}
vector<int> cv(int l,int r){
    vector<int>_;
    for(int i=l;i<=r;i++) _.push_back(i);
    return _;
}
int fnd(int i){
    vector<int>_;
    for(int i=1;i<=c;i++) _.push_back(vals[i]);
    while(_.size()>1){
        vector<int>_2,_3;
        for(int i=0;i<_.size()/2;i++){
            _2.push_back(_[i]);
        }
        for(int i=_.size()/2;i<_.size();i++){
            _3.push_back(_[i]);
        }
        if(ask(_2,i)>_2.size()){
            _=_3;
        }
        else{
            _=_2;
        }
    }
    return _[0];
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        a[i]=ask(cv(1,i));
        if(a[i]!=a[i-1]){
            vals[a[i]]=i;
            ans[i]=a[i];
        }
        c=a[i];
    }
    for(int i=1;i<=n;i++){
        if(!ans[i]){
            ans[i]=fnd(i);
        }
    }
    cout<<0<<' ';
    for(int i=1;i<=n;i++){
        cout<<ans[i]<<' ';
    }
    cout<<endl;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |