working solution for problem 3