Solution 1
Solution 2
Solution 3