Penpingu's Algorithm