#include "insects.h"
#include <bitset>
#include <iostream>
#include <stack>
using namespace std;
bitset<200010> bs;
stack<int> current;
int S;
int k = 0;
bool check(int n){
while(current.size() > k){
int hd = current.top();current.pop();
move_outside(hd);
}
int si = k;
for(int i{};i < S;i++){
if(bs[i]) continue;
move_inside(i);
si++;
int p = press_button();
if(p > n){
move_outside(i);
si--;
}
}
//cout << si << " " << n << " " << k << endl;
return (si == n*k);
}
int min_cardinality(int N) {
S = N;
for(int i{};i < N;i++){
move_inside(i);
current.emplace(i);
int p = press_button();
if(p == 2){
move_outside(i);
current.pop();
}
else k++,bs[i] = 1;
}
int l = 1;
int r = N/k;
while(l < r){
int md = l+(r-l+1)/2;
//cout << md << endl;
if(check(md)) l = md;
else r = md-1;
}
return l;
}
//TTTTFFFF