#include using namespace std; #define rep(i,n) for (int i=0;i<(int)(n);i++) #define all(v) v.begin(),v.end() using ll=long long; using pll=pair; using tll=tuple; const ll INF=(1ll<<60); template void chmin(T &a,T b){ if(a>b){ a=b; } } template void chmax(T &a,T b){ if(a> c; int k=c.size(); int n=0,sum=0; while(sum s(n+1); for(int i=1;i<=n;i++){ s[i]=ten_to_two(i); } vector>> vt(k); set st; for(int i=1;i<=n;i++){ st.insert(i); rep(j,k-s[i].size()+1){ if(s[i]==c.substr(j,s[i].size())){ for(int ii=j;ii> ans; while(true){ bool t=false; rep(i,k){ if(vt[i].size()==0) continue; set kind; int x,l,r; for(auto &[aa,bb,cc]:vt[i]){ if(!st.count(aa)) continue; kind.insert(aa); x=aa; l=bb; r=cc; } if(kind.size()==1){ t=true; ans.emplace_back(i,x); st.erase(x); for(int j=l;j last; for(auto &i:st) last.push_back(i); sort(all(last)); reverse(all(last)); int p=0; rep(i,k){ if((int)last.size()==0||(int)ans.size()==n) break; if(vt[i].size()==0) continue; set kind; for(auto &[x,l,r]:vt[i]){ if(x==p){ ans.emplace_back(i,x); for(int j=l;j