#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <queue>
using namespace std;
using ll = long long;
const int kMaxN = 2e5 + 10, kInf = (((1 << 30) - 1) << 1) + 1;
const ll kLInf = 9.22e18;
ll n, sum = 0;
deque<ll> dq;
vector<ll> v;
void S(ll x) {
if (x == 1) {
return;
}
if (x % 2) {
S(x - 1);
++ sum;
dq.push_front(sum);
} else {
S(x >> 1);
++ sum;
dq.push_back(sum);
}
}
vector<ll> construct_permutation(ll k) {
dq.clear();
v.clear();
sum = 0;
S(k);
v.push_back(sum);
for (auto i : dq) {
v.push_back(i);
}
return v;
}