solutions for part 1 2 and 3