Assignment 2 solution.