Solution A
Solution B
Solution C