The complete solution.