https://codeforces.com/blog/entry/57338
