https://medium.com/@develxper/coding-techniques-that-are-useful-to-know-while-problem-solving-b09e34f97d8d