#include <bits/stdc++.h>
using namespace std;
long long a, b;
long long ans[1000];
int cnt = 0;
void dfs(long long num, int step) {
  if (num > b) return;
  if (cnt) return;
  ans[step] = num;
  if (num == b) {
    cnt = step;
    return;
  }
  dfs(num * 2, step + 1);
  dfs(num * 10 + 1, step + 1);
}
int main() {
  memset(ans, 0, sizeof(ans));
  scanf("%I64d%I64d", &a, &b);
  cnt = 0;
  dfs(a, 0);
  if (!cnt) {
    printf("NO\n");
  } else {
    printf("YES\n");
    printf("%d\n", cnt + 1);
    printf("%I64d", a);
    for (int i = 1; i <= cnt; ++i) {
      printf(" %I64d", ans[i]);
    }
    printf("\n");
  }
}
