#include #include #include #include #include #include #define N 1000005 using namespace std; int a[N], b[105], k, ninit; void recursiv(int n) { if(n != 0 && a[n] == 0 && n!= ninit) { a[n] = 1; b[k++] = n; } if(n == 0 || n == 1 || n == 2) { if(n != 0 && a[n] == 0) { a[n] = 1, b[k++] = n; if(n == 2) a[1] = 1, b[k++] = 1; } return; } if(n % 2 == 1) { recursiv(n/2); recursiv(n/2+1); } else { recursiv(n/2+1); } } int main() { //freopen("2.in", "r", stdin); scanf("%d", &ninit); recursiv(ninit); for(int i = 0; i < k-1; i++) for(int j = i+1; j < k; j++) if(b[i] > b[j]) swap(b[i], b[j]); printf("%d\n", k); for(int i = 0; i < k; i++) printf("%d ", b[i]); return 0; }