#include "routers.h"
#include <iostream>
using namespace std;
std::vector<int> find_routers(int l, int n, int q) {
    std::vector<int> ans(1),memo(l+10,-1);
    if(q==20000){
        int maks=l;
        for(int i=1;i<n;i++){
            int med=0;
            int l=ans.back()+1,r=maks;
            while(l<=r){
                int mid=(l+r)/2;
                int x;
                if(memo[mid]!=-1)memo[mid]=use_detector(mid);
                x=memo[mid];
                // cout<<i<<" "<<l<<" "<<r<<" "<<mid<<" "<<x<<endl;
                if(i<=x) r=mid-1;
                else{
                    if(x==i-1) med=mid; 
                    l=mid+1;
                }
            }
            ans.push_back(med*2-ans.back());
            // cout<<"ans "<<i<<" "<<med<<endl;
        }
        // cout<<ans.size()<<endl;
        // for(int i=0;i<n;i++) cout<<ans[i]<<" ";
        // cout<<endl;
    }
    else if(n==2){
        int maks=l;
        int l=1,r=maks;
        int med=0;
        while(l<=r){
            int mid=(l+r)/2;
            int x=use_detector(mid);
            if(x==1) r=mid-1;
            else{
                med=mid; 
                l=mid+1;
            }
        }
        ans.push_back(med*2);
    }
    else{
            int las=0;
            for(int i=1;i<=l;i++){
                int cur=use_detector(i);
                // cout<<cur<<" ";
                if(las != cur){
                    int mid=i-1;
                    int dis=2*mid-ans.back();
                    ans.push_back(dis);
                }
                las=cur;
            }
    }
	return ans;
}
// 0 4 6 8
// x       x   x   x
// 0 1 2 3 4 5 6 7 8 
// 1 1 1 2 2 2 3 3 4
   
// 0 4 8
// x       x       x
// 0 1 2 3 4 5 6 7 8 
// 1 1 1 2 2 2 2 4 4
// mid -> i
// mid+1 -> i+1
// mid (before change)
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |