#include <bits/stdc++.h>
using namespace std;
int n, k, cnt[200004], visited[200004];
vector<int> v;
int main(){
cin >> n >> k;
visited[n] = 1;
queue<int> q;
q.push(n);
while(q.size()){
int here = q.front();
q.pop();
for(int next : {here + 1, here - 1, here * 2}){
if(next >= 0 && next <= 200000){
if(!visited[next]){
q.push(next);
visited[next] = visited[here] + 1;
cnt[next] = here;
}
}
}
}
for(int i = k; i != n; i = cnt[i]){
v.push_back(i);
}
cout << visited[k] - 1 << '\n';
for(int a : v){
cout << a << ' ';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLCBrLCBjbnRbMjAwMDA0XSwgdmlzaXRlZFsyMDAwMDRdOwp2ZWN0b3I8aW50PiB2OwppbnQgbWFpbigpewogICAgY2luID4+IG4gPj4gazsKICAgIHZpc2l0ZWRbbl0gPSAxOwogICAgcXVldWU8aW50PiBxOwogICAgcS5wdXNoKG4pOwogICAgCiAgICB3aGlsZShxLnNpemUoKSl7CiAgICAgICAgaW50IGhlcmUgPSBxLmZyb250KCk7CiAgICAgICAgcS5wb3AoKTsKICAgICAgICBmb3IoaW50IG5leHQgOiB7aGVyZSArIDEsIGhlcmUgLSAxLCBoZXJlICogMn0pewogICAgICAgICAgICBpZihuZXh0ID49IDAgJiYgbmV4dCA8PSAyMDAwMDApewogICAgICAgICAgICAgICAgaWYoIXZpc2l0ZWRbbmV4dF0pewogICAgICAgICAgICAgICAgICAgIHEucHVzaChuZXh0KTsKICAgICAgICAgICAgICAgICAgICB2aXNpdGVkW25leHRdID0gdmlzaXRlZFtoZXJlXSArIDE7CiAgICAgICAgICAgICAgICAgICAgY250W25leHRdID0gaGVyZTsKICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIGZvcihpbnQgaSA9IGs7IGkgIT0gbjsgaSA9IGNudFtpXSl7CiAgICAgICAgdi5wdXNoX2JhY2soaSk7CiAgICB9CiAgICBjb3V0IDw8IHZpc2l0ZWRba10gLSAxIDw8ICdcbic7CiAgICBmb3IoaW50IGEgOiB2KXsKICAgICAgICBjb3V0IDw8IGEgPDwgJyAnOwogICAgfQp9