#include "cave.h"
#include <bits/stdc++.h>
int ask(int curr[], int op[], int n, int mid, int val) {
int s[n];
for (int i = 0; i < n; i++) s[i] = -1;
for (int i = 0; i < n; i++) {
if (curr[i] == -1) break;
s[curr[i]] = op[i];
}
for (int i = 0; i < n; i++) {
if (s[i] != -1) continue;
if (i <= mid) s[i] = val;
else s[i] = val ^ 1;
}
int p = tryCombination(s);
if (p == -1) p = n + 2;
return p;
}
void exploreCave(int n) {
int curr[n];
for (int i = 0; i < n; i++) curr[i] = -1;
int op[n];
for (int i = 0; i < n; i++) {
if (ask(curr, op, n, n - 1, 0) > i) op[i] = 0;
else op[i] = 1;
int l = 0;
int r = n - 1;
while (r > l) {
int mid = (r + l) >> 1;
if (ask(curr, op, n, mid, op[i]) > i) r = mid;
else l = mid + 1;
}
curr[i] = l;
}
int ans[n];
for (int i = 0; i < n; i++) {
ans[curr[i]] = i;
}
answer(op, ans);
}