#include <bits/stdc++.h>
using namespace std;
stack<long long> s;
long long f(long long x, long long y) {
  if (x > y) return -1;
  if (x == y) {
    s.push(x);
    return 1;
  }
  long long a = f(2 * x, y);
  if (a != -1) {
    s.push(x);
    return a + 1;
  }
  long long b = f(x * 10 + 1, y);
  if (b != -1) {
    s.push(x);
    return b + 1;
  }
  return -1;
}
int main() {
  long long a, b;
  cin >> a >> b;
  long long ans = f(a, b);
  if (ans == -1)
    cout << "NO\n";
  else {
    cout << "YES\n" << ans << endl;
    while (!s.empty()) {
      cout << s.top() << " ";
      s.pop();
    }
  }
}
