begin solution 3