Wyobraź sobie, że stoją przed Tobą trzy słupki oznaczone przez A, B oraz C. Na słupku A znajduje się N krążków, każdy o innej średnicy, ułożonych od największego na dole do najmniejszego u góry (patrz górny rysunek). Możesz przekładać krążki między słupkami, ale tylko z zachowaniem następujących zasad:
Pozycja początkowa (u góry) i końcowa (na dole)
Twoim zadaniem jest napisanie programu, który obliczy, ile minimalnie ruchów trzeba wykonać, aby przenieść wszystkie krążki ze słupka A na słupek C (patrz dolny rysunek).
W pierwszym wierszu danych wejściowych znajduje się jedna liczba całkowita X. W kolejnych X wierszach znajduje się X liczb całkowitych N[1], N[2], ..., N[X] z zakresu od 1 do 16 (włącznie).
W danych wyjściowych powinno znaleźć się X wierszy. W i-tym wierszu (1 ≤ i ≤ X) powinna znaleźć się liczba całkowita oznaczająca minimalną liczbę ruchów, jakie należy wykonać, aby przenieść N[i] krążków ze słupka A na słupek C (stosując tylko dozwolone ruchy).
2 1 2
2 8