#include #include #include #include #include #include #include #include using namespace std; int bitcount(int a){ int cnt=0; do{if(a&1)cnt++;} while(a>>=1); return cnt; } int main(){ int move[20000]; int n; scanf("%d", &n); for(int i = 1; i<=n; i++){ move[i] = bitcount(i); } int pos[20000]; for(int i=0;i<=n;i++)pos[i]=-1; pos[1] = 1; int cnt = 1; int l = 1; while(cnt <= n){ cnt++; int ll = l; for(int i=1; i<=l; i++){ //printf("%d ",pos[i]); if(pos[i] == cnt-1){ //pos[i] = -1; if(i + move[i] == n){ printf("%d\n", cnt); return 0; } else if(i + move[i] < n){ if(ll 0){ if(pos[i-move[i]]==-1||cnt0;i--)if(pos[i]!=-1)printf("%d ",pos[i]); return 0; }