Стоит признаться, что в этом посте качество немного лучше и пару вариаций даже есть, но баян:
https://joy.reactor.cc/post/5828347