#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define BET(a,b,c) ((a)<=(b)&&(b)<(c)) #define FOR(i,n) for(int i=0,i##_end=(int(n));i VI; typedef vector VVI; int main() { int n; cin>>n; queue > qu; qu.push(MP(1,0)); VI f(n+1); while(!qu.empty()){ int now = qu.front().first; int step = qu.front().second; qu.pop(); int d = __builtin_popcount(now); if(f[now]++) continue; if(now == n){ cout<= 1) qu.push(MP(now - d, step+1)); if(now + d <= n) qu.push(MP(now + d, step+1)); } cout<<-1<