#include <bits/stdc++.h>
using namespace std;
int MAXN = 1000000005;
long long meta;
bool ok = 0;
map<long long, long long> visite;
void bfs(long long padre) {
  queue<long long> cola;
  cola.push(padre);
  while (!cola.empty()) {
    long long hijo = cola.front();
    cola.pop();
    long long hijo1 = hijo * 2;
    long long hijo2 = hijo * 10 + 1;
    if (hijo1 == meta) {
      ok = 1;
      visite[hijo1] = hijo;
      break;
    }
    if (hijo2 == meta) {
      ok = 1;
      visite[hijo2] = hijo;
      break;
    }
    if (hijo1 < MAXN) {
      visite[hijo1] = hijo;
      cola.push(hijo1);
    }
    if (hijo2 < MAXN) {
      visite[hijo2] = hijo;
      cola.push(hijo2);
    }
  }
}
int main() {
  ios::sync_with_stdio(false);
  long long padre;
  cin >> padre >> meta;
  bfs(padre);
  if (ok == false) {
    cout << "NO" << endl;
    return 0;
  }
  cout << "YES" << endl;
  vector<long long> ans;
  long long hijo = visite[meta];
  ans.push_back(meta);
  while (hijo != padre) {
    ans.push_back(hijo);
    hijo = visite[hijo];
  }
  ans.push_back(padre);
  cout << ans.size() << endl;
  for (int i = ans.size() - 1; i >= 0; i--) {
    cout << ans[i] << " ";
  }
}
