#include <bits/stdc++.h>   using namespace std;   int MAXN = 1000000005;   long long meta;   bool ok = 0;   map<long long, long long> visite;   void bfs(long long padre) {     queue<long long> cola;     cola.push(padre);     while (!cola.empty()) {       long long hijo = cola.front();       cola.pop();       long long hijo1 = hijo * 2;       long long hijo2 = hijo * 10 + 1;       if (hijo1 == meta) {         ok = 1;         visite[hijo1] = hijo;         break;       }       if (hijo2 == meta) {         ok = 1;         visite[hijo2] = hijo;         break;       }       if (hijo1 < MAXN) {         visite[hijo1] = hijo;         cola.push(hijo1);       }       if (hijo2 < MAXN) {         visite[hijo2] = hijo;         cola.push(hijo2);       }     }   }   int main() {     ios::sync_with_stdio(false);     long long padre;     cin >> padre >> meta;     bfs(padre);     if (ok == false) {       cout <<  NO  << endl;       return 0;     }     cout <<  YES  << endl;     vector<long long> ans;     long long hijo = visite[meta];     ans.push_back(meta);     while (hijo != padre) {       ans.push_back(hijo);       hijo = visite[hijo];     }     ans.push_back(padre);     cout << ans.size() << endl;     for (int i = ans.size() - 1; i >= 0; i--) {       cout << ans[i] <<    ;     }   }   