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).
Pomóż Bajtkowi i napisz program, który sprawdzi, czy dany układ klocków da się w ogóle ustawić w żądanej kolejności, a jeżeli tak, to poda, jak to zrobić.

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.