#include <bits/stdc++.h>
using namespace std;
long long sta, fin;
stack<long long> st;
void print_value() {
  cout << "YES" << endl;
  cout << st.size() << endl;
  long long *array = new long long[st.size()];
  int size = st.size();
  for (int i = 0; i < size; i++, st.pop()) array[i] = st.top();
  for (int i = size - 1; i >= 0; i--) cout << array[i] << " ";
  cout << endl;
  exit(0);
}
void start(long long current) {
  st.push(current);
  if (current == fin) {
    print_value();
  }
  if (current * 10 + 1 <= fin) {
    start(current * 10 + 1);
  }
  if (current * 2 <= fin) {
    start(current * 2);
  }
  st.pop();
}
int main() {
  cin >> sta >> fin;
  start(sta);
  cout << "NO" << endl;
  return 0;
}
