Author: ROBERT SEDGEWICK - Simon Plouffe