#include #define be(v) (v).begin(),(v).end() #define pb(q) push_back(q) #define era(t) t.erase(unique(be(t)),t.end()) #define doublecout(a) cout<inline T lcm(T a,T b){return (a*b/__gcd(a,b));} queue q; vector v; vector vi; int n; void solve(int p){ if(v[p])return; v[p]=true; int maki=p; int num=0; while(maki){ if(maki%2==1){ num++; } maki/=2; } int pm=p-num; int pp=p+num; if(pm>0&&!(v[pm])){ vi[pm]=min(vi[p]+1,vi[pm]); q.push(pm); } if(pp<=n&&!(v[pp])){ vi[pp]=min(vi[p]+1,vi[pp]); q.push(pp); } return; } int main() { cin.tie(0); ios::sync_with_stdio(false); cin>>n; if(n==1){ cout<<1<