#include "messy.h"
#include <bits/stdc++.h>
using namespace std;
const int maxn = 150;
int n, A[maxn];
void dnc1(int l, int r) {
if (l == r)
return;
int mid = (l + r) / 2;
string s(n, '1');
for (int i = l; i <= r; i++)
s[i] = '0';
for (int i = l; i <= mid; i++) {
s[i] = '1';
add_element(s);
s[i] = '0';
}
dnc1(l, mid);
dnc1(mid + 1, r);
}
void dnc2(int l, int r, vector<int> &a) {
if (l == r) {
A[a[0]] = l;
return;
}
int mid = (l + r) / 2;
vector<int> left, right;
string s(n, '1');
for (int i : a)
s[i] = '0';
for (int i : a) {
s[i] = '1';
if (check_element(s))
right.push_back(i);
else
left.push_back(i);
s[i] = '0';
}
dnc2(l, mid, left);
dnc2(mid + 1, r, right);
}
vector<int> restore_permutation(int N, int w, int r) {
n = N;
dnc1(0, n - 1);
compile_set();
vector<int> a(n);
iota(begin(a), end(a), 0);
dnc2(0, n - 1, a);
vector<int> ans(n);
for (int i = 0; i < n; i++)
ans[i] = A[i];
return ans;
}