Przekładanka
Limit pamięci: 64 MB
Bajtazar kupił synkowi Bajtkowi zestaw klocków ponumerowanych od do
i ustawił je w rzędzie w pewnej kolejności.
Zadaniem Bajtka jest ustawienie klocków w kolejności numerów tych klocków, od najmniejszego do największego.
Jedyne ruchy, jakie może wykonywać Bajtek, to:
- przełożenie ostatniego klocka na początek (ruch typu a), oraz
- przełożenie trzeciego klocka na początek (ruch typu b).
Wejście
W pierwszym wierszu standardowego wejścia znajduje się jedna liczba całkowita ,
.
W drugim wierszu znajduje się
liczb całkowitych z zakresu od
do
pooddzielanych pojedynczymi odstępami.
Liczby te nie powtarzają się i reprezentują początkowe ustawienie klocków.
Wyjście
Jeśli nie istnieje sekwencja ruchów prowadząca do ustawienia klocków w porządku rosnącym numerów, Twój program powinien wypisać na standardowe wyjście "NIE DA SIE" (bez cudzysłowów).
W przeciwnym przypadku, w pierwszym wierszu wyjścia powinna znaleźć się jedna liczba całkowita (
),
oznaczająca liczbę wykonywanych operacji.
Przez operację rozumiemy
-krotne wykonanie jednego z ruchów a lub b.
Jeżeli , to w drugim wierszu powinien znaleźć się ciąg
liczb całkowitych z dodanymi pojedynczymi znakami a lub b.
Zapis postaci
a (dla
) oznacza
-krotne wykonanie ruchu a.
Zapis postaci
b (dla
) oznacza
-krotne wykonanie ruchu b.
Dodatkowo, znaki stowarzyszone z liczbami znajdującymi się w drugim wierszu muszą być ułożone na przemian.
Jeśli istnieje więcej niż jedno rozwiązanie, Twój program może wypisać dowolne z nich.
Przykład
Dla danych wejściowych:
4 1 3 2 4
poprawną odpowiedzią jest:
4 3a 2b 2a 2b
natomiast dla danych:
7 1 3 2 4 5 6 7
poprawnym wynikiem jest:
NIE DA SIE
a dla danych:
3 1 2 3
poprawnym wynikiem jest:
0
Autorzy zadania: Krzysztof Diks, Wojciech Rytter.