https://medium.com/double-pointer/crack-meta-software-engineering-interviews-top-5-disjoint-set-questions-with-python-solutions-59901d3b3a2d