#include <bits/stdc++.h>
using namespace std;
#define prev aaaa
const int MAX_N = 200000;
int n, k, visited[MAX_N + 4], prev[MAX_N + 4];
queue<int> q;
vector<int> v;
int main(){
    cin >> n >> k;
    if(n == k){
        cout << 0 << '\n' << n << '\n';
        return 0;
    }
    q.push(n);
    visited[n] = 1;
    while(q.size()){
        int here = q.front();
        q.pop();
        
        if(here == k){
            break;
        }
        
        for(int next : {here + 1, here - 1, here * 2}){
            if(next < 0 || next > MAX_N || visited[next]) continue;
            visited[next] = visited[here] + 1;
            prev[next] = here;
            q.push(next);
        }
    }
    
    for(int i = k; i != n; i = prev[i]){
        v.push_back(i);
    }
    reverse(v.begin(), v.end());
    
    cout << visited[k] - 1 << '\n';
    for(int b : v) cout << b << ' ';
}