Author: Michael Stepanov

Here is a very simple but efficient solution inspired by this article:

Read more