Transformación: de A hacia B
Vasily tiene un número , el cual quiere convertir en un número . Para su propósito, él puede hacer dos tipos de operaciones:
- multiplicar el número actual por (esto es, remplazar el número por \(2·x\));
- adicionar el dígito a la derecha del número actual (esto es, remplazar el número por \(10·x + 1\)).
Tú necesitas ayudar a Vasily a transformar el número en el número usando solo las operaciones descritas anteriormente, o buscar que es imposible hacerlo.
Note que en esta tarea no necesitas minimizar el número de operaciones. Es suficiente con encontrar una vía para transformar en .
Entrada
La primera línea contiene dos enteros positivos y \((1 \le a < b \le 10^9)\) — el número que Vasily tiene y el número que él quiere obtener.
Salida
Si no existe una manera de transformar desde , imprima "NO" (sin las comillas).
De lo contrario imprima tres líneas. En la primera línea imprima "YES" (sin las comillas). La segunda línea debe tener un sólo entero — la longitud de la secuencia transformada. En la tercera línea imprima la secuencia de transformaciones \(x_1, x_2, \ldots , x_k\), donde:
- ,
- ,
- debe ser obtenido de \(x_{i - 1}\) usando cualquiera de las dos operaciones descritas \((1 < i \le k)\).
Si hay múltiples respuestas, imprima cualquiera de ellas.
Ejemplo de entrada
1 21
Ejemplo de salida
YES
3
1 2 21
Comments