solution and test