#include "doll.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define fall(i,a,b) for(int i=a;i<=b;i++)
#define rfall(i,a,b) for(int i=a;i>=b;i--)
#define sz(x) (int) x.size()
#define pb push_back
#define all(x) x.begin(),x.end()
const int MAXN=5e5+10;
const ll inf=1e17;
typedef pair<int,int> pii;
int n,X[MAXN],Y[MAXN],vis[MAXN],cur=1;
vector<int> resp;
void add(int ind,int tam,int val){
vis[ind]++;
if(tam==2){
if(vis[ind]==1) X[ind]=val;
else Y[ind]=val;
return;
}
if(vis[ind]==1){
cur++;
X[ind]=-cur;
cur++;
Y[ind]=-cur;
}
if(vis[ind]%2==1) add(-X[ind],tam/2,val);
else add(-Y[ind],tam/2,val);
}
void create_circuit(int M, std::vector<int> A){
n=sz(A);
resp.resize(M+1,-1);
fall(i,0,n-1) add(1,n,A[i]);
cur++;
fall(i,1,M) resp[i]=-cur;
X[cur]=-1,Y[cur]=-(cur+1);
cur++;
X[cur]=-1,Y[cur]=-(cur+1);
cur++;
X[cur]=-1,Y[cur]=-(cur+1);
cur++;
X[cur]=-1,Y[cur]=0;
fall(i,1,cur) vis[i]=0;
vector<int> x(cur),y(cur);
fall(i,0,cur-1) x[i]=X[i+1],y[i]=Y[i+1];
answer(resp,x,y);
}