#include <bits/stdc++.h>
using namespace std;
bool found = false;
vector<long long> VPB(vector<long long> a, long long index) {
  a.push_back(index);
  return a;
}
void RecF(long long a, long long b, vector<long long> c) {
  if (a > b || found) return;
  if (a == b) {
    found = 1;
    cout << "YES\n" << c.size() << "\n";
    for (long long y = 0; y < c.size(); y++) cout << c[y] << " ";
    cout << "\n";
    return;
  }
  RecF(a * 10 + 1, b, VPB(c, a * 10 + 1));
  RecF(a * 2, b, VPB(c, a * 2));
}
void VOID() {
  long long a, b;
  cin >> a >> b;
  RecF(a, b, vector<long long>(1, a));
  if (!found) cout << "NO\n";
}
int main() {
  long long CounterT = 1;
  while (CounterT--) VOID();
  return 0;
}
