#include "coreputer.h"
#include<bits/stdc++.h>
using namespace std;
int a[20];
vector<int> s;
vector<int> x;
map<vector<int>,int> mp;
int find(vector<int> vc){
if(mp.find(vc)!=mp.end())return mp[vc];
return mp[vc]=run_diagnostic(vc);
}
std::vector<int> malfunctioning_cores(int N) {
int ch=-1;
int cnt=0;
int l=1,r=N;
int va;
while(l<r){
s.clear();
int mid=(l+r)/2;
for(int i=0;i<mid;i++){
s.push_back(i);
}
int val=find(s);
if(val>=0)va=val,r=mid;
else l=mid+1;
}
l--;
a[l]=1;
//cout << l;
r=-1;
if(l!=N-1){
for(int i=l+1;i<N;i++){
s.clear();
for(int j=0;j<l;j++){
s.push_back(j);
}
if(a[i]==1)continue;
s.push_back(i);
int val=find(s);
if(val==1 || val==0){
if(r==-1)r=i;
a[i]=1;
}
}
//cout << r << " ";
for(int i=0;i<l;i++){
s.clear();
if(a[i]==1)continue;
s.push_back(i);
for(int j=(va==0?r+1:r);j<N;j++){
s.push_back(j);
}
int val=find(s);
if(val==1 || val==0)a[i]=1;
}
}
s.clear();
for(int i=0;i<N;i++){
if(a[i])s.push_back(1);
else s.push_back(0);
}
return s;
}