input: Write a python function to solve the Tower of Hanoi problem.
  assert hanoi(3, [3, 2, 1], [], []) == [3, 2, 1]
  assert hanoi(2, [2, 1], [], []) == [2, 1]
  assert hanoi(1, [1], [], []) == [1]
output: def hanoi(n, source, auxiliary, target):
      if n > 0:
          hanoi(n-1, source, target, auxiliary)
          target.append(source.pop())
          hanoi(n-1, auxiliary, source, target)
      return target