input: Write a python function to solve the Tower of Hanoi problem for any number of disks and print each move.
  assert hanoi(2, [(1, "A"), (2, "A")], [], [])==None
  assert hanoi(3, [(1, "A"), (2, "A"), (3, "A")], [], [])==None
  assert hanoi(1, [(1, "A")], [], [])==None
output: def hanoi(n, source, auxiliary, target):
      def move_disk(disk, from_peg, to_peg):
          print(f"Move disk {disk} from {from_peg} to {to_peg}")
  
      def solve(n, source, auxiliary, target):
          if n == 1:
              disk, from_peg = source.pop()
              move_disk(disk, from_peg, target)
              target.append((disk, target))
          else:
              solve(n-1, source, target, auxiliary)
              disk, from_peg = source.pop()
              move_disk(disk, from_peg, target)
              target.append((disk, target))
              solve(n-1, auxiliary, source, target)
  
      solve(n, source, auxiliary, target)