ZADANIE A - Utrudnione wieże Hanoi

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).

Dane wejściowe:

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).

Dane wyjściowe:

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).

Przykładowe dane wejściowe:

2
1
2
	

Przykładowe dane wyjściowe:

2
8