harvard cs76 spring 2012 npuzzle project