#include "chameleon.h"
#include <bits/stdc++.h>
using namespace std;
int side[1005];
vector<int> con[1005];
void dfs(int nod, int where)
{
if(side[nod] != -1)
{
assert(side[nod] == where);
return;
}
side[nod] = where;
for(int adj:con[nod])
dfs(adj, 1 - where);
}
int qry(const vector<int>&nodes, int le, int ri, int newv)
{
vector<int> aux;
for(int i=le;i<=ri;i++)
aux.push_back(nodes[i]);
aux.push_back(newv);
return Query(aux);
}
bool good[1005][1005];
void Solve(int N)
{
for(int i=1;i<=2*N;i++)
{
for(int j=1;j<i;j++)
side[j] = -1;
for(int j=1;j<i;j++)
if(side[j] == -1)
dfs(j, 0);
for(int c=0;c<2;c++)
{
vector<int> nodes;
for(int j=1;j<i;j++)
if(side[j] == c)
nodes.push_back(j);
/*int st = 0, dr = (int)nodes.size() - 1, ans = -1;
while(st <= dr)
{
int mij = (st + dr) / 2;
if(qry())
}*/
for(int u=0;u<nodes.size();u++)
{
if(qry(nodes, u, u, i) < 2)
{
con[nodes[u]].push_back(i);
con[i].push_back(nodes[u]);
}
}
}
}
for(int i=1;i<=2*N;i++)
{
assert(con[i].size() == 1 || con[i].size() == 3);
//for(int j:con[i]) cerr<<i<<" "<<j<<" con\n";
if(con[i].size() == 1)
{
good[i][con[i][0]] = 1;
}
else
{
int cate = 0;
for(int r=0;r<3;r++)
{
int a = con[i][r], b = con[i][(r+1)%3];
if(Query({i, a, b}) == 1)
{
good[i][a] = good[i][b] = 1;
cate++;
}
}
assert(cate == 1);
}
}
for(int i=1;i<=2*N;i++)
for(int j=1;j<i;j++)
if(good[i][j] && good[j][i])
Answer(i, j);
}