#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 << ' ';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgcHJldiBhYWFhCmNvbnN0IGludCBNQVhfTiA9IDIwMDAwMDsKaW50IG4sIGssIHZpc2l0ZWRbTUFYX04gKyA0XSwgcHJldltNQVhfTiArIDRdOwpxdWV1ZTxpbnQ+IHE7CnZlY3RvcjxpbnQ+IHY7CmludCBtYWluKCl7CiAgICBjaW4gPj4gbiA+PiBrOwogICAgaWYobiA9PSBrKXsKICAgICAgICBjb3V0IDw8IDAgPDwgJ1xuJyA8PCBuIDw8ICdcbic7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBxLnB1c2gobik7CiAgICB2aXNpdGVkW25dID0gMTsKICAgIHdoaWxlKHEuc2l6ZSgpKXsKICAgICAgICBpbnQgaGVyZSA9IHEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwogICAgICAgIAogICAgICAgIGlmKGhlcmUgPT0gayl7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmb3IoaW50IG5leHQgOiB7aGVyZSArIDEsIGhlcmUgLSAxLCBoZXJlICogMn0pewogICAgICAgICAgICBpZihuZXh0IDwgMCB8fCBuZXh0ID4gTUFYX04gfHwgdmlzaXRlZFtuZXh0XSkgY29udGludWU7CiAgICAgICAgICAgIHZpc2l0ZWRbbmV4dF0gPSB2aXNpdGVkW2hlcmVdICsgMTsKICAgICAgICAgICAgcHJldltuZXh0XSA9IGhlcmU7CiAgICAgICAgICAgIHEucHVzaChuZXh0KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZvcihpbnQgaSA9IGs7IGkgIT0gbjsgaSA9IHByZXZbaV0pewogICAgICAgIHYucHVzaF9iYWNrKGkpOwogICAgfQogICAgcmV2ZXJzZSh2LmJlZ2luKCksIHYuZW5kKCkpOwogICAgCiAgICBjb3V0IDw8IHZpc2l0ZWRba10gLSAxIDw8ICdcbic7CiAgICBmb3IoaW50IGIgOiB2KSBjb3V0IDw8IGIgPDwgJyAnOwp9