Solutian added. Comments will be added later.