cs50 problem set 3 solutions