#include "coreputer.h"
#include "bits/stdc++.h"
using namespace std;
#ifdef duc_debug
#include "bits/debug.h"
#else
#define debug(...)
#endif
std::vector<int> malfunctioning_cores(int n) {
int l = 0, r = n - 1, pos = -1;
vector<int> res(n), st(n, -1);
while (l <= r) {
int mid = (l + r) >> 1;
vector<int> cand(mid + 1);
iota(cand.begin(), cand.end(), 0);
st[mid] = run_diagnostic(cand);
if (st[mid] >= 0) {
pos = mid;
r = mid - 1;
} else l = mid + 1;
}
res[pos] = 1;
if (pos != n - 1) {
int cur = 1;
vector<int> cand(pos);
iota(cand.begin(), cand.end(), 0);
for (int i = pos + 1; i < n; ++i) {
cand.push_back(i);
res[i] = run_diagnostic(cand) >= 0;
cand.pop_back();
cur -= res[i];
}
cand.resize(n - pos - 1);
iota(cand.begin(), cand.end(), pos + 1);
for (int i = pos - 1; i >= 0; --i) {
if (i == 0) {
if (cur) {
res[i] = (st[pos] == 0);
} else {
res[i] = (st[pos] == 1);
}
break;
}
cand.push_back(i);
res[i] = run_diagnostic(cand) > -st[pos];
cand.pop_back();
cur += res[i];
}
}
return res;
}