#include <bits/stdc++.h>
using namespace std;
void Read(int &x) {
  char c;
  while (c = getchar(), c != EOF)
    if (c >= '0' && c <= '9') {
      x = c - '0';
      while (c = getchar(), c >= '0' && c <= '9') x = x * 10 + c - '0';
      ungetc(c, stdin);
      return;
    }
}
int n, a, b;
stack<int> s;
bool dfs(long long now) {
  if (now > b) return 0;
  if (now == b) {
    s.push(b);
    return 1;
  }
  if (dfs(now << 1)) {
    s.push(now);
    return 1;
  }
  if (dfs(now * 10 + 1)) {
    s.push(now);
    return 1;
  }
  return 0;
}
int main() {
  Read(a), Read(b);
  if (dfs(a)) {
    puts("YES");
    printf("%u\n", s.size());
    while (!s.empty()) {
      printf("%d ", s.top());
      s.pop();
    }
  } else
    puts("NO");
}
