#include <bits/stdc++.h>
using namespace std;
long long ans[100];
bool fuck = 0;
int sz;
void dfs(long long a, long long b) {
  ans[sz++] = a;
  if (a == b) {
    fuck = 1;
    puts("YES");
    printf("%d\n", sz);
    for (int i = 0; i < sz; i++) printf("%lld ", ans[i]);
    puts("");
    return;
  }
  if (a * 2 <= b) {
    dfs(a * 2, b);
    sz--;
  }
  if (a * 10 + 1ll <= b) {
    dfs(a * 10 + 1ll, b);
    sz--;
  }
}
int main() {
  long long n, m;
  scanf("%lld%lld", &n, &m);
  sz = 0;
  fuck = 0;
  dfs(n, m);
  if (!fuck) puts("NO");
  return 0;
}
