#include <bits/stdc++.h>
#include "cave.h"
using namespace std;
void exploreCave(int n){
vector<int> id(n);
vector<int> pos(n);
vector<int> ask(n, 0);
for(int i=0; i<n; i++){
if(tryCombination(ask.data())==i){
// id[i]=1;
ask[i]=1;
id[i]=1;
}
int l=0, r=n-1;
while(l<r){
int mid=(l+r)/2;
vector<int> ask2(n, 0);
if(id[i]==0)fill(ask2.begin(), ask2.end(), 1);
for(int j=l; j<=mid; j++)ask2[j]^=1;
for(int j=0; j<i; j++){
ask2[pos[j]]=id[j];
}
if(tryCombination(ask.data())>i){
// pos not in this region
l=mid+1;
}
else r=mid;
}
pos[i]=l;
ask[l]=i;
}
//for(auto e:id)cout << e << ' ';cout << '\n';
//for(auto e:pos)cout << e << ' ';cout << '\n';
answer(id.data(), pos.data());
}