#include "perm.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> construct_permutation(long long k)
{
vector<int>perm = {};
auto addn = [&] () {
perm.push_back(perm.size());
};
auto add1 = [&] () {
for(int &i : perm){
i++;
}
perm.push_back(0);
};
auto add3 = [&] () {
addn();
int pos0 = 1e9;
int pos1 = 1e9;
for(int i = 0;i<perm.size();i++){
if(perm[i]==0){
pos0=i;
}
if(perm[i]==1){
pos1=i;
}
}
if(pos1<pos0){
//good
addn();
for(int &i : perm){
if(i>=2){
i++;
}
}
perm.push_back(2);
}
else{
add1();
addn();
add1();
}
};
vector<int>adds;
while(k){
adds.push_back(k%4);
k/=4;
}
while(--adds.back()){
add1();
}
adds.pop_back();
reverse(adds.begin(),adds.end());
for(int k : adds){
if(k==0){
addn();
addn();
}
else if(k==1){
addn();
addn();
add1();
}
else if(k==2){
addn();
add1();
addn();
}
else if(k==3){
add3();
}
}
return perm;
}