#include "chameleon.h"
#include <bits/stdc++.h>
using namespace std;
vector<int>adj[1002];
void Solve(int N) {
vector<int> p;
for(int q=2;q<=2*N;q++){
bool vis[q+1]; memset(vis,false,sizeof vis);
vector<int>col[2];
queue<pair<int,int> >qu;
for(int w=1;w<q;w++){
if(vis[w])continue;
qu.push({w,0});
while(qu.size()){
auto[a,b]=qu.front(); qu.pop();
col[b].push_back(a);
vis[a]=true;
for(auto x : adj[a]){
if(vis[x])continue;
qu.push({x,1-b}); vis[x]=true;
}
}
}
for(int w=0;w<2;w++){
p=col[w];p.push_back(q);
int brp=Query(p);
int mul=0;
while(p.size()>brp){
int l=mul,r=col[w].size()-1;
int mana=-1;
while(l<=r){
int mid=(l+r)/2;
p.clear();
for(int e=mul;e<=mid;e++){
p.push_back(col[w][e]);
// cout<<col[w][e]<<"K"<<endl;
}
p.push_back(q);
if(Query(p)<p.size()){
mana=mid;
r=mid-1;
}
else{
l=mid+1;
}
}
adj[q].push_back(col[w][mana]);
adj[col[w][mana]].push_back(q);
mul=mana+1;
p.clear();
for(int e=mul;e<col[w].size();e++)p.push_back(col[w][e]);
p.push_back(q);
brp=Query(p);
}
}
}
set<int>isi[2*N+1];
for(int q=1;q<=2*N;q++){
for(auto x : adj[q]){
isi[q].insert(x);
}
}
for(int q=1;q<=2*N;q++){
if(isi[q].size()>1){
for(int w=0;w<3;w++){
vector<int>p;
for(int e=0;e<3;e++){
if(w!=e)p.push_back(adj[q][e]);
}
p.push_back(q);
if(Query(p)==1){
isi[q].erase(adj[q][w]);
isi[adj[q][w]].erase(q);
}
}
}
}
bool vis[2*N+1]; memset(vis,false,sizeof vis);
for(int q=1;q<=2*N;q++){
if(vis[q])continue;
int apa=*isi[q].begin();
vis[q]=vis[apa]=true;
Answer(q,apa);
}
}