#include #include #ifdef LOCAL #include #define debug(...) debug_print::multi_print(#__VA_ARGS__, __VA_ARGS__) #else #define debug(...) (static_cast(0)) #endif using namespace atcoder; using mint=modint1000000007; using namespace std; using ll=long long; using ul=unsigned long long; int dx[9] = {-1, 1, 0, 0, -1, -1, 1, 1, 0}; int dy[9] = {0, 0, -1, 1, -1, 1, -1, 1, 0}; using Graph=vector>; ll op(ll a,ll b){return min(a,b);} ll e(){return 2e9;} int main(){ int N; cin>>N; vectorvi(N+1,-1); queueq; q.push(1); vi[1]=1; while(!q.empty()){ int v=q.front(); q.pop(); if(v+__popcount(v)0&&vi[v-__popcount(v)]==-1)vi[v-__popcount(v)]=vi[v]+1,q.push(v-__popcount(v)); } cout<