#include <bits/stdc++.h>
using namespace std;
const long long dx[4] = {-1, 0, 0, 1};
const long long dy[4] = {0, -1, 1, 0};
const long long INF = 1e18;
const long long mod = 1000000007;
long long a, b, n, m, x, k, c, y, z, i, l, r, u, ans, sum, maxx, v[2555][2555],
    d;
long long na, ma, nb, mb;
long long br[1456789], ar[1456789], mn[1456789], mx[1456789], used[1456789],
    g[55][55];
char h[1234][1234], p[55][55];
string s, t, ress;
vector<long long> vec, as;
map<string, long long> mmap;
set<long long> ss;
bool ok, oka;
char ch;
void dii() {
  cin >> a >> b;
  x = b;
  while (a != b) {
    if (b < a) {
      cout << "NO";
      return;
    }
    if (b % 10 == 1) {
      b /= 10;
    } else if (b % 2 == 0)
      b /= 2;
    else if (b % 2 == 1) {
      cout << "NO";
      return;
    }
    vec.push_back(b);
    ans++;
  }
  cout << "YES";
  cout << endl;
  cout << ans + 1;
  cout << endl;
  reverse(vec.begin(), vec.end());
  for (auto a : vec) {
    cout << a << ' ';
  }
  cout << x;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int q = 1;
  while (q--) dii();
  return 0;
}
