#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n; cin >> n;
vector<int> j = {0};
for(int i = 0; i < n-1; i++){
cout << 2 << " " << i+1 << " " << i+2 << endl;
int j1; cin >> j1;
if(j1 == 2){
j.push_back(i+1);
}
}
vector<int> nxt1(n+1, -2);
vector<int> nxt(n+1, -1);
for(int i = 0; i < j.size(); i++){
int low = 0;
int top = i-1;
int ns = -1;
while(low <= top){
int mid = (low + top)/2;
cout << i-mid+1 << " " << j[i]+1 << " ";
int co = 1;
for(int y = i-1; y >= mid; y--){
cout << j[y]+1 << " ";
if(nxt[y] < mid){
co++;
}
}cout << endl;
int h; cin >> h;
if(h == co){
top = mid-1;
}else{
ns = mid;
low = mid+1;
}
}
nxt[i] = ns;
nxt1[j[i]] = ns;
}
cout << 0 << " ";
int l = 0;
int it = 1;
vector<int> g(n+1);
for(int y = 0; y < n; y++){
if(nxt1[y] == -2){
cout << l << " ";
}else if(nxt1[y] == -1){
g[y] = it;
cout << it << " ";
l = it;
it++;
}else{
cout << g[nxt1[y]] << " ";
l = g[nxt1[y]];
}
}cout << endl;
return 0;
}
//1 1 2 2 1
//1 2 3 4 3
//1 2 1 2 3
//1 2 2 3 2
# | 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... |