#include "perm.h"
#include<set>
#include<map>
#include<string>
#include<math.h>
#include<queue>
#include<stack>
#include<iomanip>
using namespace std;
using ll = long long;
using vll = vector<ll>;
using vvll = vector<vll>;
using pll = pair<ll, ll>;
using vpll = vector<pll>;
using vvpll = vector<vpll>;
vll to_binary(ll k) {
vll ind;
for (ll i = 30; i >= 0; i--) {
if (k & (1LL << i)) {
ind.push_back(i);
}
}
return ind;
}
std::vector<int> construct_permutation(long long k)
{
ll n = 0;
k--;
vll sol = to_binary(k);
ll s = sol.size();
for (ll j = 0; j < s; j++) {
ll i = sol[j];
n += i;
n++;
sol.push_back(1);
}
ll cur = n - 1;
ll pos = 0;
vector<int> ans(n);
for (auto i : sol) {
ll now = cur - i + 1;
for (ll j = 0; j < i; j++) {
ans[pos + j] = now;
now++;
}
cur = cur - i;
pos += i;
}
return ans;
}