https://shikhalev.github.io/2012/03/lie.html