Use the state monad -- awesome
Use Integer because the result is very large (just happened to fit in 64-bit Int)
Solve Problem 62 in Java
Alternate solution without the state monad

Makes use of "until" to consume cubes, add them to a map, and produce collision lists.
Tried TODOs
Group state into a tuple
Use MultiMap as a better fit
Switch back to state monad, but with iterateUntil and MultiMap
Solve Problem 63 in Haskell
Avoid pattern matching on a possibly empty list