#include <bits/stdc++.h>
using namespace std;
long long a, b, vis[100], flag = 0;
void dfs(int now, int step) {
  if (now > b || flag)
    return;
  else if (now == b) {
    flag = 1;
    cout << "YES" << endl << step + 1 << endl;
    for (int i = 0; i <= step; i++) {
      cout << vis[i];
      if (i != step) cout << " ";
    }
    return;
  } else {
    vis[step + 1] = now * 2;
    dfs(now * 2, step + 1);
    if (now <= 2e8) {
      vis[step + 1] = now * 10 + 1;
      dfs(now * 10 + 1, step + 1);
    }
  }
}
int main() {
  cin >> a >> b;
  vis[0] = a;
  dfs(a, 0);
  if (flag == 0) cout << "NO";
  return 0;
}
