solution part 1