#include "doll.h"
#include <iostream>
#include <algorithm>
using namespace std;
vector<int> og;
int s=1;
vector<int> x,y;
int recur(int l,int r)
{
if(l==r)
{
return og[l];
}
int mid=(l+r)/2;
int p=x.size();
x.push_back(-1);
y.push_back(-1);
int lc=recur(l,mid),rc=recur(mid+1,r);
x[p]=lc;
y[p]=rc;
return -p-1;
}
vector<int> perm(vector<int> a)
{
if(a.size()==1)
{
return a;
}
int n=a.size();
vector<int> cur[2];
for(int i=0;i<n;i++)
{
cur[i%2].push_back(a[i]);
}
vector<int> fp=perm(cur[0]);
vector<int> sp=perm(cur[1]);
fp.insert(fp.end(),sp.begin(),sp.end());
return fp;
}
void create_circuit(int m, std::vector<int> a) {
x.clear();
y.clear();
int n=a.size();
s=1;
while((1<<__lg(n+1))!=(n+1))
{
a.push_back(-s);
x.push_back(-s);
s++;
n++;
}
a.push_back(0);
n++;
// cout<<n<<endl;
og=perm(a);
// for(auto x:og)
// {
// cout<<x<<' ';
// }
// cout<<endl;
// answea
while(y.size()<x.size())y.push_back(-s);
vector<int>c(m+1,-s);
recur(0,n-1);
answer(c,x,y);
}