import java.io.*;
import java.util.*;
class Edge implements Comparable<Edge>{
int end;
int value;
Edge(int end, int value) {
this.end = end;
this.value = value;
}
public int compareTo(Edge o) {
return this.value - o.value;
}
}
public class Main {
int N
= Integer.
parseInt(st.
nextToken()); int K
= Integer.
parseInt(st.
nextToken());
ArrayList
<Edge
>[] list
= new ArrayList[num
*2+1]; int[] distance = new int[num*2+1];
boolean[] check = new boolean[num*2+1];
for(int i = 0; i<=num*2; i++) {
list[i] = new ArrayList<>();
}
list[0].add(new Edge(1,1));
for(int i = 1; i<=num*2; i++) {
list[i].add(new Edge(i-1,1));
list[i].add(new Edge(i+1,1));
list[i].add(new Edge(i*2,1));
}
distance[N] = 0;
PriorityQueue<Edge> queue = new PriorityQueue<>();
queue.add(new Edge(N,0));
int[] route = new int[num+1];
while(!queue.isEmpty()) {
Edge a = queue.poll();
if(check[a.end])
continue;
check[a.end] = true;
for(Edge o : list[a.end]) {
if(o.end > num || o.end<0)
continue;
if(distance[o.end] > distance[a.end] + o.value) {
distance[o.end] = distance[a.end] + o.value;
queue.add(new Edge(o.end, distance[o.end]));
route[o.end] = a.end;
}
}
}
System.
out.
println(distance
[K
]);
int tmp = K;
Stack<Integer> stack = new Stack<>();
while(true) {
stack.push(tmp);
tmp = route[tmp];
if(tmp==0)
break;
}
if(N!=K && N==0)
stack.push(0);
while(!stack.isEmpty())
System.
out.
print(stack.
pop() + " "); }
}
aW1wb3J0IGphdmEuaW8uKjsKaW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgRWRnZSBpbXBsZW1lbnRzIENvbXBhcmFibGU8RWRnZT57CiAgICBpbnQgZW5kOwogICAgaW50IHZhbHVlOwoKICAgIEVkZ2UoaW50IGVuZCwgaW50IHZhbHVlKSB7CiAgICAgICAgdGhpcy5lbmQgPSBlbmQ7CiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgfQogICAgcHVibGljIGludCBjb21wYXJlVG8oRWRnZSBvKSB7CiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgLSBvLnZhbHVlOwogICAgfQp9CgpwdWJsaWMgY2xhc3MgTWFpbiB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgIEJ1ZmZlcmVkUmVhZGVyIGJyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihTeXN0ZW0uaW4pKTsKICAgICAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKGJyLnJlYWRMaW5lKCkpOwogICAgICAgIGludCBOID0gSW50ZWdlci5wYXJzZUludChzdC5uZXh0VG9rZW4oKSk7CiAgICAgICAgaW50IEsgPSBJbnRlZ2VyLnBhcnNlSW50KHN0Lm5leHRUb2tlbigpKTsKICAgICAgICBpbnQgbnVtID0gTWF0aC5tYXgoTixLKTsKCiAgICAgICAgQXJyYXlMaXN0PEVkZ2U+W10gbGlzdCA9IG5ldyBBcnJheUxpc3RbbnVtKjIrMV07CiAgICAgICAgaW50W10gZGlzdGFuY2UgPSBuZXcgaW50W251bSoyKzFdOwogICAgICAgIGJvb2xlYW5bXSBjaGVjayA9IG5ldyBib29sZWFuW251bSoyKzFdOwoKICAgICAgICBmb3IoaW50IGkgPSAwOyBpPD1udW0qMjsgaSsrKSB7CiAgICAgICAgICAgIGxpc3RbaV0gPSBuZXcgQXJyYXlMaXN0PD4oKTsKICAgICAgICB9CiAgICAgICAgQXJyYXlzLmZpbGwoZGlzdGFuY2UsSW50ZWdlci5NQVhfVkFMVUUpOwogICAgICAgIGxpc3RbMF0uYWRkKG5ldyBFZGdlKDEsMSkpOwoKICAgICAgICBmb3IoaW50IGkgPSAxOyBpPD1udW0qMjsgaSsrKSB7CiAgICAgICAgICAgIGxpc3RbaV0uYWRkKG5ldyBFZGdlKGktMSwxKSk7CiAgICAgICAgICAgIGxpc3RbaV0uYWRkKG5ldyBFZGdlKGkrMSwxKSk7CiAgICAgICAgICAgIGxpc3RbaV0uYWRkKG5ldyBFZGdlKGkqMiwxKSk7CiAgICAgICAgfQoKICAgICAgICBkaXN0YW5jZVtOXSA9IDA7CgogICAgICAgIFByaW9yaXR5UXVldWU8RWRnZT4gcXVldWUgPSBuZXcgUHJpb3JpdHlRdWV1ZTw+KCk7CiAgICAgICAgcXVldWUuYWRkKG5ldyBFZGdlKE4sMCkpOwogICAgICAgIGludFtdIHJvdXRlID0gbmV3IGludFtudW0rMV07CgogICAgICAgIHdoaWxlKCFxdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgRWRnZSBhID0gcXVldWUucG9sbCgpOwogICAgICAgICAgICBpZihjaGVja1thLmVuZF0pCiAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICAgIGNoZWNrW2EuZW5kXSA9IHRydWU7CiAgICAgICAgICAgIGZvcihFZGdlIG8gOiBsaXN0W2EuZW5kXSkgewogICAgICAgICAgICAgICAgaWYoby5lbmQgPiBudW0gfHwgby5lbmQ8MCkKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICAgICAgICBpZihkaXN0YW5jZVtvLmVuZF0gPiBkaXN0YW5jZVthLmVuZF0gKyBvLnZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2Vbby5lbmRdID0gZGlzdGFuY2VbYS5lbmRdICsgby52YWx1ZTsKICAgICAgICAgICAgICAgICAgICBxdWV1ZS5hZGQobmV3IEVkZ2Uoby5lbmQsIGRpc3RhbmNlW28uZW5kXSkpOwogICAgICAgICAgICAgICAgICAgIHJvdXRlW28uZW5kXSA9IGEuZW5kOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihkaXN0YW5jZVtLXSk7CgogICAgICAgIGludCB0bXAgPSBLOwogICAgICAgIFN0YWNrPEludGVnZXI+IHN0YWNrID0gbmV3IFN0YWNrPD4oKTsKICAgICAgICB3aGlsZSh0cnVlKSB7CiAgICAgICAgICAgIHN0YWNrLnB1c2godG1wKTsKICAgICAgICAgICAgdG1wID0gcm91dGVbdG1wXTsKICAgICAgICAgICAgaWYodG1wPT0wKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGlmKE4hPUsgJiYgTj09MCkKICAgICAgICAgICAgc3RhY2sucHVzaCgwKTsKCiAgICAgICAgd2hpbGUoIXN0YWNrLmlzRW1wdHkoKSkKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChzdGFjay5wb3AoKSArICIgIik7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKICAgIH0KfQ==