M(0,1) called.  Cache key = 1
M(0,1): # Changes to land on the origin at index 2: 1
M(0,1): Calling M(2,0).
  M(2,0) called.  Cache key = 602
  M(2,0): Calculated directly since cl == 0: Returning 2
M(0,1): Best value when land on the origin at index 2: 3
M(0,1): Found a new max: 3
M(0,1): # Changes to land on the origin at index 4: 1
M(0,1): Calling M(4,0).
  M(4,0) called.  Cache key = 1204
  M(4,0): Calculated directly since cl == 0: Returning 1
M(0,1): Best value when land on the origin at index 4: 2
M(0,1): # Changes to land on the origin at index 6: 1
M(0,1): Calling M(6,0).
  M(6,0) called.  Cache key = 1806
  M(6,0): Calculated directly since cl == 0: Returning 0
M(0,1): Best value when land on the origin at index 6: 1
M(0,1): # Changes to land on the origin at index 8: 2
M(0,1): Returning 3
3