#include "perm.h"
#include <bits/stdc++.h>
#define int long long
#define emb emplace_back
#define pii pair <int32_t, int32_t>
#define tiii tuple <int32_t, int32_t, int32_t>
#define all(a) a.begin(), a.end()
using namespace std;
const int N = 1e5 + 5;
const int inf = 1e18;
vector<int32_t> construct_permutation(long long k){
k--;
vector <int> val(65);
int mul = 2;
for (int i = 1; i <= 60; i++) {
val[i] = mul - 1;
mul *= 2;
}
vector <int> need;
for (int i = 60; i >= 1; i--) {
while (k >= val[i]) k -= val[i], need.emb(i);
}
int sum = accumulate(all(need), 0ll);
int cur = sum - 1;
vector <int32_t> ans;
for (auto e : need) {
int x = cur - e + 1;
while (x <= cur) ans.emb(x++);
cur -= e;
}
return ans;
}
/*
1: {}
2: {1}
3: {1, 0}
4: {0, 1}
5: 2^2 + 2^0 : {2, 0, 1}
6: 5: find xi such that sum(2^xi - 1) = 5 -> 2^2-1 + 2^1-1 + 2^1-1 = {2, 3, 1, 0}
*/