MIT 6001x problem set 1, nice practice :D