Transformación: de A hacia B


Submit solution

Points: 100 (partial)
Time limit: 1.0s
Memory limit: 64M

Author:
Problem type
Allowed languages
Ada, Assembly, Awk, BrainF***, C, C#, C++, Dart, Go, Java, JS, Kotlin, Lua, Pascal, Perl, Prolog, Python, Scala, Swift, VB

Vasily tiene un número a, el cual quiere convertir en un número b. Para su propósito, él puede hacer dos tipos de operaciones:

  • multiplicar el número actual por 2 (esto es, remplazar el número x por \(2·x\));
  • adicionar el dígito 1 a la derecha del número actual (esto es, remplazar el número x por \(10·x + 1\)).

Tú necesitas ayudar a Vasily a transformar el número a en el número b 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 a en b.

Entrada

La primera línea contiene dos enteros positivos a y b \((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 b desde a, 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 k — la longitud de la secuencia transformada. En la tercera línea imprima la secuencia de transformaciones \(x_1, x_2, \ldots , x_k\), donde:

  • x_1 = a,
  • x_k = b,
  • x_i 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

There are no comments at the moment.