#include <bits/stdc++.h>
using namespace std;
const int nmax = 100007;
int N, M, c, T, sol, x;
long long a, b, st[nmax];
bool ok;
void Dfs(long long a, long long b, int top) {
  if (ok) return;
  if (a > b)
    return;
  else if (a == b) {
    ok = true;
    cout << "YES\n" << top - 1 << '\n';
    for (int i = 1; i < top; ++i) cout << st[i] << ' ';
    return;
  }
  st[top] = 2 * a;
  Dfs(2 * a, b, top + 1);
  st[top] = a * 10 + 1;
  Dfs(a * 10 + 1, b, top + 1);
}
int main(void) {
  int i, j, s;
  cin >> a >> b;
  st[1] = a;
  Dfs(a, b, 2);
  if (!ok) cout << "NO\n";
  return 0;
}
