#include <bits/stdc++.h>
using namespace std;
struct RTC {};
long long int A, B;
map<long long int, long long int> sol;
bool gao(long long int cur) {
  if (cur > B) return false;
  if (cur == B) return true;
  if (gao(cur << 1LL)) {
    sol[cur] = cur << 1LL;
    return true;
  }
  if (gao(cur * 10LL + 1LL)) {
    sol[cur] = cur * 10LL + 1LL;
    return true;
  }
  return false;
}
int main() {
  scanf("%lld %lld", &A, &B);
  if (gao(A)) {
    vector<int> ans;
    int cur = A;
    while (cur != B) {
      ans.push_back(cur);
      cur = sol[cur];
    }
    ans.push_back(B);
    printf("YES\n");
    printf("%d\n", ((int)(ans).size()));
    for (int i = 0; i < (((int)(ans).size())); i++) {
      if (i) putchar(' ');
      printf("%d", ans[i]);
    }
  } else {
    printf("NO");
  }
  putchar('\n');
  return 0;
}
