Emil hat eine Zahl x und möchte sie in eine andere Zahl y umwandeln. Dafür stehen ihm folgende Aktionen zur Verfügung:
Emil kann die aktuelle Zahl x um 1 erhöhen (x = x + 1) und dafür 1 Geldeinheit bezahlen.
Emil kann die aktuelle Zahl x um 1 verringern (wenn x größer als 0 ist) (x = x - 1) und dafür 1 Geldeinheit bezahlen.
Emil kann x mit einer beliebigen positiven ganzen Zahl k multiplizieren (x = k ⋅ x) und dafür 2k Geldeinheiten bezahlen.
Emil kann x durch eine beliebige positive ganze Zahl k teilen, sofern x durch k teilbar ist (x = x / k), und dafür 2k Geldeinheiten bezahlen.
Schreibe ein Programm, das ermittelt, wie viel Geld Emil mindestens bezahlen muss, um x in y zu verwandeln. Außerdem soll es die erforderlichen Aktionen in der Reihenfolge ausgeben, in der sie ausgeführt werden müssen. Beachte, dass es mehrere Möglichkeiten geben kann, diese minimale Summe zu erreichen – du kannst jede davon ausgeben. Zusätzlich muss die Anzahl der Aktionen nicht minimiert werden.
Eingabe
Die Eingabe besteht aus zwei ganzen Zahlen x und y (1 ≤ x, y ≤ 10 000). Sie stehen für Emils Anfangswert und den gewünschten Endwert.
Ausgabe
Die erste Zeile der Ausgabe soll zwei durch Leerzeichen getrennte Zahlen m und n enthalten, wobei m die Anzahl der Aktionen darstellt und n die minimale Geldsumme, die Emil benötigt, um x in y umzuwandeln.
In den nächsten m Zeilen gibst du für jede Aktion der Reihe nach den Index der Operation, , aus. Handelt es sich um Multiplikation oder Division ( oder ), so soll nach der Angabe der Operationsnummer auch die entsprechende Zahl ausgegeben werden (mit einem Leerzeichen dazwischen).