#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fs first
#define sc second
using namespace std;
signed main() {
    int n;
    cin >> n;
    int col = 0;
    int ans[n + 1];
    
    vector<int> v;
    for (int i = 1; i <= n; i++) {
        cout << v.size() + 1 << " ";
        for (auto u : v) cout << u << " ";
        cout << i << endl;
        cout.flush();
        int res;
        cin >> res;
        if (res == v.size() + 1) {
            v.pb(i);
            col++;
            ans[i] = col;
            continue;
        }
        int l = 0, r = v.size() - 1, anss = -1;
        while (l <= r) {
            int mid = (l + r) / 2;
            cout << mid + 2 << " ";
            for (int j = 0; j <= mid; j++) cout << v[j] << " ";
            cout << i << endl;
            cout.flush();
            int ress;
            cin >> ress;
            if (ress == mid + 2) {
                l = mid + 1;
            } else {
                anss = mid;
                r = mid - 1;
            }
        }
        ans[i] = ans[v[anss]];
    }
    cout << 0 << " ";
    for (int i = 1; i <= n; i++) cout << ans[i] << " ";
    cout << endl;
    cout.flush();
}
| # | 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... |