#include <bits/stdc++.h>
using namespace std;
const long long N = 1e9 + 10;
long long a, b;
map<int, bool> mark;
map<int, int> par;
vector<int> v;
void dfs(long long source) {
  if (source > N) return;
  mark[source] = true;
  if (!mark[2 * source]) par[2 * source] = source, dfs(2 * source);
  if (!mark[source * 10 + 1])
    par[source * 10 + 1] = source, dfs(10 * source + 1);
}
int main() {
  cin >> a >> b;
  dfs(a);
  if (!mark[b]) {
    cout << "NO";
    return 0;
  }
  while (b != a) {
    v.push_back(b);
    b = par[b];
  }
  cout << "YES" << endl;
  cout << v.size() + 1 << endl;
  cout << a << " ";
  for (int i = v.size() - 1; i >= 0; i--) cout << v[i] << " ";
  return 0;
}
