https://codeforces.com/contest/1198/submission/58096981 https://gist.github.com/min-25/aed29a23b004505d2094a5cddaf56ff9 https://arxiv.org/pdf/1703.03998.pdf