import time

n = 21

t1 = []
t2 = []
t3 = []

moves = 0

def init():
global moves
movs = 0
for i in range(n, 0, -1):
t1.append(i)


def printTowers():
print()
print(t1)
print(t2)
print(t3)


def moveAB():
moveXX(t1, t2)

def moveAC():
moveXX(t1, t3)

def moveBC():
moveXX(t2, t3)


def moveXX(a1,a2): #moves between two given arrays
# time.sleep(0.3)

if len(a1) == 0:
a1.append(a2.pop())
elif len(a2) == 0:
a2.append(a1.pop())
elif a1[len(a1)-1] > a2[len(a2)-1]:
a1.append(a2.pop())
else:
a2.append(a1.pop())

# printTowers()


def isSolved():
if len(t3) == n:
return True

return False


def move3Even():
global moves
moveAB()
moveAC()
moveBC()

moves = moves + 3

def move3Odd():
global moves
moveAC()
if not isSolved(): #For odd, it will always end after AC
moveAB()
moveBC()
moves += 3
else:
moves += 1



def goEven():
while not isSolved():
move3Even()

def goOdd():
while not isSolved():
move3Odd()

init()
moves += 0
if n%2 == 1:
goOdd()
else:
goEven()