Updated with Part1 solutions